2

我有两列,即:

   caseSno                 newCaseSno
   7592                     7593
   7591                     7592
   2935                     7591
   7092                     7572

上表caseSno和newCaseSno有两栏,incaseSno是原案号,转给别人后newCaseSno保留新号,现在我想在这张表中找到所有相关的案子。即在第一行caseSno7593 应该在我的报告中展开 4 次,因为它与 7593、7592、7591 和 2935 相关联。简单来说,我需要类似朋友之友机制的东西

请帮助我,如何找出与其他列相关的所有记录。

简单快速的可执行查询将不胜感激。

4

1 回答 1

0

一种想法是定义三个表:

CaseTbl         Person             CasePersonHistory
------------    --------------     ------------------
case_id (PK)    person_id (PK)     case_id   (PK)
case_name       etc etc...         person_id (PK)
case_descr                         seq_num   (PK)
etc etc...                         etc etc...

编辑:不能case用于表名...选择别的东西

总是有一个 id ......这CaseTbl是唯一的描述。对Person. CasePersonHistory提供案例和具有序列号的人员之间的多对多关系,其中最高的seq_num将是当前拥有该案例的人,所有较低seq_num的 s 是以前拥有该案例的人。

例如,如果

fred's person_id  = 54
mikes's person_id = 55
jane's person_id  = 56

如果case_id1, 并且 Fred 最初有这个案子,然后把它交给了 Mike,然后 Mike 又把它交给了 Jane,那么CasePersonHistory看起来就像......

CasePersonHistory
------------------
case_id      person_id     seq_num
-----------------------------------
1            54            1
1            55            2
1            56            3

现在,您可以通过根据 case_id 从表中选择并找到序列号的最大值来找出该案例的当前所有者或所有者是谁:

SELECT MAX(seq_num) FROM CasePersonHistory WHERE case_id = 1;

或让目前拥有此案的人...

SELECT person_id FROM CasePersonHistory WHERE case_id = 1 order by seq_no DESC LIMIT 1

希望有帮助:)

于 2013-05-28T09:34:36.543 回答