DQL Select возвращает несколько строк для повторяющихся значений.

Я использую Documentum Developer Edition 6.6. Я запустил следующий DQL: выберите "r_object_id", "r_modify_date", "r_version_label", "i_position", "object_name" из "dm_document", где FOLDER (ID ('0bde75d18000cfa4')) и "r_object_type" = "dm_document" порядок по возрастанию "r_modify_date", по убыванию "i_position"

Я ожидал: DQL вернет одну строку для каждого объекта dm_documentum. Помню — мои ранние запросы с этим DQL делали это — по одной икры на каждый документ. Но сегодня я вижу: для некоторых объектов dm_document возвращается только одна строка; тогда как для других объектов dm_document возвращается несколько строк на объект! Как следующее:

09de75d18000d514 28.07.2011 15:41 1.0,CURRENT -1,-2 Док1

Другими словами, для документа 09de75d18000d514 была возвращена одна строка (с повторяемыми «r_version_label» и «i_position» в виде массивов), тогда как для другого документа 09de75d18000d515 повторяющиеся свойства были возвращены в виде отдельных строк. Почему это так? Для меня это выглядит как баг - потому что документы 09de75d18000d514 и 09de75d18000d515 не имеют существенных отличий, это просто обычные экземпляры dm_document, не более того.

И еще более важный вопрос: что я могу сделать? Я вижу, что проблема исчезает, если я удаляю «i_position» desc из DQL — тогда каждый dm_object возвращается как одна строка. Но мне нужна была эта сортировка «i_position» desc», чтобы «r_version_label» отсортировался в соответствии с соответствующими значениями «i_position» (каждый элемент массива «r_version_label» соответствует элементу массива «i_position», который содержит его «позицию»). номер"). Может быть, это мое предположение — что Documentum должен упорядочивать «r_version_label» в соответствии с «i_position», потому что я указал «i_position» desc» — было неверным? Если да, то теперь я вижу единственный способ справиться с этим:

  • Я использую DQL без описания "i_position"
  • Моя программа (она использует DFS) сама отсортирует элементы «r_version_label» — после того, как DQL принесет результаты — используя их индексы из «i_position»

Может быть, есть какое-то лучшее решение?


person KellyLynch    schedule 28.07.2011    source источник


Ответы (1)


Я предполагаю, что вы хотите получить строки с r_version_label в том же порядке, что и в объектах, если они были получены.

Я знаю, что для этого вы можете использовать «упорядочить по r_object_id, i_position desc».

Поскольку вы также хотите упорядочить по r_modify_date, вы можете попробовать «упорядочить по r_modify_date asc, r_object_id, i_position desc» или просто выполнить сортировку по дате в своем коде.

person David Pierre    schedule 29.07.2011
comment
Спасибо за ответ. Я уже пробовал это - работает, да. - person KellyLynch; 01.08.2011