2014-08-28 30 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". 
相关问题