代码之家  ›  专栏  ›  技术社区  ›  W R

在两列上联接表

  •  0
  • W R  · 技术社区  · 1 年前

    我有以下结构的表格

    TablePC

    名称 聚会19 聚会24
    1. A. 1. 1.
    2. B 1. 2.

    party19和party24列是TableParty.no的外键约束

    TableParty

    名称
    1. 十、
    2. Y

    我的查询

    select
        TablePC.name
       ,TableParty.name as A
       ,TableParty.name as B
    from TablePC 
    join TableParty on TableParty.no = TablePC.party19 and TableParty.no=TablePC.party24;
    

    我要求输出为

    A. 十、 十、
    B 十、 Y

    我无法获得此输出。任何帮助都将不胜感激。

    WR

    2 回复  |  直到 1 年前
        1
  •  2
  •   Tim Biegeleisen    1 年前

    你需要 联接,每个外键列一个:

    SELECT tpc.name, tp1.name AS A, tp2.name AS B
    FROM TablePC tpc
    LEFT JOIN TableParty tp1
       ON tp1.no = tpc.party19
    LEFT JOIN TableParty tp2
       ON tp2.no = tpc.party24;
    

    注意:我在上面使用左联接,因为在 TablePC 列确实 中有匹配项 TableParty 对于两者 party19 party24 那一行仍将在结果集中。内部联接将删除中的此类不匹配记录 TablePC .

        2
  •  1
  •   kurniadi445    1 年前

    您可以尝试使用相关的子查询来获得所需的结果。下面是一个使用相关子查询的示例查询:

    select
        TablePC.name,
        (select name from TableParty where no = TablePC.party19) as a,
        (select name from TableParty where no = TablePC.party24) as b
    from TablePC;
    

    通过使用像上面这样的相关子查询,您应该能够获得所需的输出。

    A, X, X
    B, X, Y