【问题标题】:SQL Server query to find parent names of childSQL Server查询以查找孩子的父母姓名
【发布时间】:2012-04-05 10:33:35
【问题描述】:

我有一张这样的桌子

ID  Name    Mother  Father
1   Sue     NULL    NULL
2   Ed      NULL    NULL
3   Emma    1       2
4   Jack    1       2
5   Jane    NULL    NULL
6   Bonnie  5       4
7   Bill    5       4

我需要如下输出

ID  Name    Mother  Father
3   Emma    sue     ed
4   jack    sue     ed
6   bonnie  jane    jack
7   bill    jane    jack

我试过用 join n cte 写查询,但想不出逻辑,谁能帮帮我

【问题讨论】:

    标签: sql-server join parent common-table-expression


    【解决方案1】:
    SELECT t.ID, t.Name, m.Name, f.Name
    FROM your_table t
    INNER JOIN your_table m ON m.ID = t.Mother
    INNER JOIN your_table f ON f.ID = t.Father
    

    如果您想包含没有Mother 和/或Father 节点的记录,请使用LEFT JOIN

    SELECT t.ID, t.Name, ISNULL(m.Name, 'Orphan') Mother, ISNULL(f.Name, 'Orphan') Father
    FROM your_table t
    LEFT JOIN your_table m ON m.ID = t.Mother
    LEFT JOIN your_table f ON f.ID = t.Father
    

    【讨论】:

      【解决方案2】:

      试试这样的:

      select 
          p.id, p.name, p1.name as mother, p2.name as father
      from people p
      inner join people p1 on p1.id = p.mother
      inner join people p2 on p2.id = p.father
      

      【讨论】:

        【解决方案3】:

        选择查询

        SELECT A.*    
        FROM tbl A   
            ,tbl M    
            ,tbl F    
        WHERE A.Mother = M.ID     
            AND A.Father = F.ID    
        

        没有内连接..

        【讨论】:

        • 这仍然是一个 INNER JOIN
        猜你喜欢
        • 1970-01-01
        • 2017-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多