【问题标题】:Chainup records from single table with two columns in PHP mysql在 PHP mysql 中使用两列从单个表中链接记录
【发布时间】:2013-05-23 04:50:41
【问题描述】:

我有两列,即:

   caseSno                 newCaseSno
   7592                     7593
   7591                     7592
   2935                     7591
   7092                     7572

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

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

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

【问题讨论】:

    标签: php mysql join


    【解决方案1】:

    一个想法是定义三个表:

    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_nums 是以前拥有该案例的人.

    例如,如果

    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-07-06
      • 1970-01-01
      • 2018-11-13
      • 2014-10-01
      • 1970-01-01
      • 2018-08-03
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多