DQL Select возвращает несколько строк для повторяющихся значений - PullRequest
1 голос
/ 28 июля 2011

Я использую 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" asc, "i_position" desc

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

09de75d18000d514 28.07.2011 15:41 1.0, CURRENT -1, -2 Doc1 09de75d18000d515 28.07.2011 15:41 1.0 -1 Doc2 ... 09de75d18000d515 7/28/ 2011 15:41 CURRENT -2 Doc2

Другими словами - для одной строки 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_ver»Массив sion_label "соответствует элементу массива" i_position ", который содержит его" номер позиции ").Может быть, это мое предположение - что Documentum должен был заказать «r_version_label» в соответствии с «i_position» из-за того, что я указал «i_position» desc »- неправильно? Если да, то теперь я вижу единственный способ справиться с этим:

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

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

1 Ответ

2 голосов
/ 29 июля 2011

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

Я знаю, что для этого вы можете использовать 'order by r_object_id, i_position desc'.

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

...