2014-08-28 27 views
0

我有一個表訂閱,佔有者,地址。我需要找出它的多個地址和佔用者可用於訂閱。如何識別表中是否有多個記錄可用?

快速索引

訂閱我有以下細節

flags index name   st area cnt field name 
      addressoccupant  999  2 + Addressid 
             + Occupantid 

    pu subscription  999  1 + subscriptionid 

地址表 - addressid是首要獨特 乘員表-Occupantid是primnary獨特

當我詢問我找不到任何多地址和佔有者的訂閱,但我需要確保它可以有一個subscritpion多個地址和佔有者。

請讓我知道如何找到這個。

+0

查看您認爲可能會返回多個結果的查詢的示例會很有幫助。我在下面的例子中一起拋出了一些東西,但這可能不是你所問的。 – 2014-08-28 11:57:40

+0

通過查看索引信息,我們可以確認訂閱是否可以有多個地址或佔有者。 – user3715001 2014-08-28 13:30:46

回答

0

鑑於這些索引,對於任何給定的addressId或佔用者ID,您都可以擁有多個訂閱記錄。

的「addressoccupant」指標是不是唯一的,即使是那隻在addressId和occupantId字段的組合是唯一的。

爲了防止重複,您需要爲每個字段定義唯一的索引。類似於「訂閱」索引但沒有「主要」屬性。

這將防止重複,但是,在現實世界中,人(誰可能映射到「居住者」)往往有多個地址和地址經常有住在其中多人。 addressId和occupantId的組合可以合理地是唯一的,但您可能並不樂意使各個字段獨一無二 - 很大程度上取決於您的應用程序和實際數據。

(你或許應該得到這個系統的「數據架構師」的幫助,如果有這樣的人。)

正如你可以用曖昧的關鍵字,以確定如果查詢返回多個記錄:

find subscription no-lock where addressid = 34 no-error. /* "34" is just a made up example... */ 
if available subscription then 
    message "found one!". 
else if ambiguous subscription then 
    message "more than 1 :(". 
else 
    message "no records". 
相關問題