链接记录从单表与PHP mysql的两列


Chainup records from single table with two columns in PHP mysql

我有两列,即:

   caseSno                 newCaseSno
   7592                     7593
   7591                     7592
   2935                     7591
   7092                     7572

上表中caseSno和new CaseSno为两列,其中caseSno为原病例编号,而在病例转移给他人后,newCaseSno保留新编号,现在我想在该表中找到所有相关的病例。即在第一行caseSno 7593应该在我的报告中展开4次,因为它与7593,7592,7591和2935相关联。简单来说,我需要一些类似朋友的朋友机制

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

简单和快速可执行的查询将受到赞赏。

一个想法是定义三个表:

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作为表名…选择其他内容

CaseTbl总是有一个id…这是独一无二的描述。Person也一样。CasePersonHistory提供了病例和具有序列号的人之间的多对多关系,其中最高的seq_num表示当前拥有该病例的人,所有较低的seq_num表示以前拥有该病例的人。

例如,if

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

希望有帮助