2011-05-13 65 views
0

選擇數據時嗨
我有一個Web服務連接到具有其中有一些數據的表稱爲客戶機一個分貝。
我有另一個Web服務連接到另一個數據庫,有一個名爲clientdetails其中有一些其他數據的表。
我必須返回一個分頁的客戶端列表,並且每個客戶端對象都包含這兩個表中的信息。
但我有一個問題。
必須在兩個表上應用搜索條件。
所以在客戶表基本上我可以有屬性:
cprop1,cprop2
在clientdetails表,我可以有cdprop1,cdprop2
和我的搜索條件可以cporp1 =東西,cdprop2 = somethingelse分頁結果從2個數據庫

我所說的第一個Web服務,並把它的標準cporp1 =東西
並返回一些信息,然後我調用該方法在第二Web服務,但如果我要回到說,10個項目在頁面上和第二的準則Web服務應用於第一個Web服務選擇的10個項目(cdprop2 = somethingelse),那麼我可能會留下8個項目或沒有任何項目湖
那麼在這種情況下我該怎麼做?
我如何確保始終獲得正確數量的項目(就像用戶在頁面上所說的那樣)?

回答

0

我發現在像這樣的實例中,最好不要使用身份主鍵,而是在第二個數據庫(在第一個數據庫中生成)中生成值的主鍵。
至於搜索,您應該從第一個數據庫中搜索符合您的條件的前1000個項目,並將它們與匹配第二個數據庫中給定條件的前1000個項目相交,並從此交集中返回所需數量的項目。
您的查詢不應該以任何方式返回無限量的項目,因此1000應該這樣做。當然,這個數字可能會更大或更小。

0

直到你有兩種反應,你不知道你要多少記錄有顯示。

你不用什麼樣的數據庫訪問,你意味着你要求「N記錄匹配標準X」,其中N設置爲10.在某些數據庫訪問機制中,你可以要求所有匹配記錄然後在該集合中推進「遊標」,因此您不需要設置任何上限 - 我們假設數據庫負責爲這樣的查詢有效地管理資源。

如果你不能做到這一點,那麼你需要能夠重溫第一個數據庫,要求在接下來的10條記錄,重複,直到最後你有一整頁或沒有更多的記錄,都可以找到。這要求你有一些方法來爲「下一個10」指定一個查詢。

您需要能夠以某種有效的方式獲得與條件匹配的所有記錄,無論是通過您的數據庫提供的某種光標機制,還是通過您自己的「分頁」查詢,沒有這種能力,我沒有辦法保證給出準確的結果。