Как получить детей от виртуальных документов в Documentum
Я пытаюсь получить дочерние элементы определенного виртуального документа, используя запрос ниже
select * from dm_document in document ID('virtual document id') descend with any r_version_label='CURRENT'
Я могу получить дочерние элементы для определенного виртуального документа, но я хочу, чтобы все дочерние элементы (только текущая версия) всех виртуальных документов выполнялись одним запросом dql.
Может ли кто-нибудь помочь мне с запросом dql, чтобы все дочерние элементы всех виртуальных документов присутствовали в базе документов?
И что означают прямые и косвенные компоненты виртуального документа?
Обновление: запрос, который я использую
select e.*,C.r_object_id as folder_id,C.r_folder_path from dm_folder_r C,
(
select A.*,A.i_folder_id from dm_document A,
(
SELECT r_object_id,object_name FROM dm_document
WHERE i_chronicle_id
IN (select component_id,version_label from dmr_containment where parent_id in (select r_object_id from dm_document where r_is_virtual_doc=1 or r_link_cnt>0))
)d
where d.r_object_id=A.r_object_id
)e where e.i_folder_id=C.r_object_id and C.r_folder_path is not null
Если компонент в виртуальном документе также является виртуальным документом (вложенный виртуальный документ), предоставляет ли dmr_containment компоненты вложенного виртуального документа? Я имею в виду, что dmr_containment дает все компоненты вплоть до конечного уровня (наибольшая глубина), или мы должны использовать downce в запросе?
Если мы должны использовать опускание, то где мы должны включить опускание в запрос dql, который я использую?
Пожалуйста, помогите мне.
Заранее спасибо.
1 ответ
Проблема с этим запросом состоит в том, что могут существовать виртуальные документы с дочерним элементом, на который ссылается не текущий идентификатор. Но вы все еще можете получить список...
Попробуйте что-нибудь такое:
SELECT
pa.r_object_id, ch.r_object_id, cu.r_object_id
FROM
dm_document pa,
dm_document (ALL) ch ,
dm_document cu,
dmr_containment r
WHERE
pa.r_is_virtual_doc = 1
and r.parent_id = pa.r_object_id
and r.component_id = ch.r_object_id
and cu.i_chronicle_id = ch.i_chronicle_id
В большинстве случаев вы получите одно и то же значение для 2-го и 3-го столбца, поскольку дочерний элемент будет связан с текущей версией, но иногда вы можете получить другое. Для 1-го и 3-го столбцов вы также получите те же значения для некоторых записей, поскольку первый компонент виртуального диска является родительским документом. На самом деле вы должны заглянуть в таблицу объектов dmr_containment и узнать об этом, чтобы получить желаемый результат.
Надеюсь это поможет.