2011-07-08 39 views
-1

我正在使用Documentum Developer Edition 6.6。 我需要(使用DFS)執行以下DQL表達檢索查詢結果中的前N個對象

選擇 「r_version_label」, 「i_chronicle_id」, 「i_position」, 「r_modify_date」, 「受試者」, 「標題」, 「r_object_type」, 「OBJECT_NAME」, 「r_object_id」,從 「dm_document」,其中文件夾(ID( '0cde75d180000107'))和 「r_object_type」 通過 「r_modify_date」 ASC, 「i_position」 DESC

但我只需要對象的第一N = 'dm_document' 順序選擇退貨。我重複一遍:N個對象,而不是行(這很重要,因爲生成的屬性中的r_version_label是可重複的字段)。

我試圖做到這一點使用以下DQL: 選擇 「r_version_label」, 「i_chronicle_id」, 「i_position」, 「r_modify_date」, 「主題」, 「標題」, 「r_object_type」, 「OBJECT_NAME」,「r_object_id 「從 」dm_document「,其中文件夾(ID( '0cde75d180000107'))和 」r_object_type「 由= 'dm_document' 順序 」r_modify_date「 ASC, 」i_position「 DESC ENABLE(OPTIMIZE_TOP,RETURN_TOP)

但是我看到:返回是行,而不是對象。這是因爲我的Documentum Server具有默認參數return_top_results_row_based(= true)。更改server.ini中的參數對我來說是不可接受的 - 我必須編寫一個無論return_top_results_row_based爲多少都能以相同方式工作的應用程序。

我已經嘗試了RETURN_RANGE,SQL_DEF_RESULT_SET和FETCH_ALL_RESULTS而不是RETURN_TOP - 但它們的N也是行。

所以,現在我看到了唯一的方法來做到這一點。我將使用以下DQL: 從「dm_document」中選擇「r_version_label」,「i_chronicle_id」,「i_position」,「r_modify_date」,「subject」,「title」,「r_object_type」,「object_name」,「r_object_id」 (ID( '0cde75d180000107'))和 「r_object_type」 通過 「r_modify_date」 ASC = 'dm_document' 順序, 「i_position」 DESC ENABLE(OPTIMIZE_TOP,RETURN_TOP)

並且在處理結果我的應用程序將只首先使用N個返回的對象。希望「OPTIMIZE_TOP」將讀取我不會使用的對象的時間減到最少。我的數據庫管理系統是MSSQL,而且DQL Reference說「OPTIMIZE_TOP」確實對MSSQL有效。

也許有人可以提出更好的解決方案?

回答

0

嘗試此查詢:

選擇 「r_object_id, 」r_version_label「,」 i_chronicle_id 「 」i_position「, 」r_modify_date「, 」主題「, 」標題「, 」r_object_type「, 」OBJECT_NAME「,」 r_object_id 「從 」dm_document「,其中文件夾(ID( '0cde75d180000107'))和 」r_object_type「= 'dm_document' 順序通過 」r_object_id「, 」r_modify_date「 ASC, 」i_position「 DESC

訂貨上r_object_id應強制DQL彙集起來行到結果集合中的對象 我真的不知道它是如何與OPTIMIZE/RETURN_TOP交互的

+0

我不能,不幸好吃 - 我的任務需要確切的「r_modify_date asc,i_position desc」排序。作爲ORDER BY序列的第一個成員的「r_object_id」是不可接受的。 – KellyLynch

+0

「r_modify_date asc,r_object_id,i_position desc」可以接受嗎? –