OTRS에서 postgresql 데이터베이스에 대한 쿼리를 만드는 데 문제가 있습니다. CMDB에 저장된 일부 데이터로 자산 목록을 가져와야하지만 데이터 저장 방법에 문제가 있습니다.otrs 데이터베이스를 쿼리 중
이 쿼리는 가능한 멀리까지 작동하지만 더 많은 데이터를 얻기 위해 다른 왼쪽 조인을 추가하자마자 결과를 반환하지 않고 계속 실행됩니다.
필자가 볼 수있는 한 모든 정보가 모든 관계가없는 xml_storage 테이블에 포함되어 있으므로 데이터를 얻기 위해 해당 테이블을 반복적으로 쿼리해야하는 문제가 있습니다. 경우에 따라 정수가 가변 문자로 저장되는 데이터 유형이 혼합되어 있으므로이 값을 사용하여 일반 카탈로그에서 추가 정보를 얻을 수 없습니다. 쿼리보다는 OTRS API를 사용하는 나는이에 대한 일 동안 벽돌 벽에 내 머리를 두드리는 된
그래서 난 정말이 가능할 것이다 도움
SELECT
asset_value,
manufacturer_value,
model_value,
serial_value,
fqdn_value,
array_agg(service),
purchasedate_value,
status_value,
configitem.configitem_number,
configitem_version.name,
general_catalog.name
FROM
public.configitem_version,
public.general_catalog,
public.configitem
left join
(SELECT
xml_storage.xml_content_value AS asset_value,
xml_storage.xml_key
FROM
public.xml_storage
WHERE
xml_content_key = '[1]{''Version''}[1]{''Asset Number''}[1]{''Content''}') as select_asset on last_version_id::int = select_asset.xml_key::int
left join
(SELECT
xml_storage.xml_content_value AS manufacturer_value,
xml_storage.xml_key
FROM
public.xml_storage
WHERE
xml_content_key = '[1]{''Version''}[1]{''Manufacturer''}[1]{''Content''}') as select_manufacturer on last_version_id::int = select_manufacturer.xml_key::int
left join
(SELECT
xml_storage.xml_content_value AS model_value,
xml_storage.xml_key
FROM
public.xml_storage
WHERE
xml_content_key = '[1]{''Version''}[1]{''Model''}[1]{''Content''}') as select_model on last_version_id::int = select_model.xml_key::int
left join
(SELECT
xml_storage.xml_content_value AS serial_value,
xml_storage.xml_key
FROM
public.xml_storage
WHERE
xml_content_key = '[1]{''Version''}[1]{''SerialNumber''}[1]{''Content''}') as select_serial on last_version_id::int = select_serial.xml_key::int
left join
(SELECT
xml_storage.xml_content_value AS fqdn_value,
xml_storage.xml_key
FROM
public.xml_storage
WHERE
xml_content_key = '[1]{''Version''}[1]{''FQDN''}[1]{''Content''}') as select_fqdn on last_version_id::int = select_fqdn.xml_key::int
left join
(SELECT
link_relation.source_key AS "configitem_id",
service.name AS "service"
FROM
public.link_relation,
public.service
WHERE
link_relation.target_key::int = service.id AND
link_relation.target_object_id::int = 2 AND link_relation.source_object_id::int = 3
UNION
SELECT
link_relation.target_key AS "configitem_id",
service.name AS "service"
FROM
public.link_relation,
public.service
WHERE
link_relation.source_key::int = service.id AND
link_relation.target_object_id::int = 3 AND link_relation.source_object_id::int = 2) as select_service on configitem.id = configitem_id::int
left join
(SELECT
xml_storage.xml_content_value AS purchasedate_value,
xml_storage.xml_key
FROM
public.xml_storage
WHERE
xml_content_key = '[1]{''Version''}[1]{''PurchaseDate''}[1]{''Content''}') as select_purchasedate on last_version_id::int = select_purchasedate.xml_key::int
left join
(SELECT
general_catalog.name AS status_value,
general_catalog.id
FROM
public.general_catalog) as select_status on configitem.cur_depl_state_id::int = select_status.id::int
WHERE
configitem.last_version_id = configitem_version.id AND
configitem.class_id = general_catalog.id AND
(configitem.class_id = 32 OR configitem.class_id = 33)
GROUP BY
asset_value,
manufacturer_value,
model_value,
serial_value,
fqdn_value,
purchasedate_value,
status_value,
configitem.configitem_number,
configitem_version.name,
general_catalog.name
;
절대적으로 끔찍한 스키마처럼 보입니다. "영원히 실행되는"쿼리 - 그것에 대해 '설명하는'것이 무엇입니까? '설명을 선택하십시오 ... ' –