Как получить детей от виртуальных документов в 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 и узнать об этом, чтобы получить желаемый результат.

Надеюсь это поможет.

Другие вопросы по тегам