1

我正在尝试使用递归自联接编写查询。我的表格如下:

表格1

EMP_ID      Name
1          Manger1 
2          Manger2
3          Manger3
4          Employ1
5          Employ2

表2

Par_EMP_ID   EMP_ID   
1                2
2                3
3                4
3                5  

在上面的表格中Manager1,, Manager2, ...Employe2是公司的员工,Manager1部门主管Manager2正在向 向 报告Manager1Manager3正在向 报告Manager2,这种关系维护在table2哪里Par_EMP_IDEMP_IDreportii,列EMP_ID是报告者的 id。现在我想要结果如下:

Manager1      Manager2   Manager3  Employe1
Manager1      Manager2   Manager3  Employe2
4

1 回答 1

1

更新:

根据您的规格,这是解决方案:

SELECT  e.names member, d.name child
    FROM MEMBERS d INNER JOIN
        (SELECT a.id, GROUP_CONCAT(c.name) NAMES
            FROM MEMBERS a
    INNER JOIN RELATIONSHIP b ON a.id = b.MEM_ID
INNER JOIN MEMBERS c ON c.id = b.PAR_MEM_ID
GROUP BY a.id) e ON e.id = d.id

结果:

|             MEMBER |        CHILD |
|--------------------|--------------|
| Great Grand Father | Grand Father |
|       Grand Father |       Father |
|             Father |       Child1 |
|             Father |       Child2 |

注意:结果可能取决于您的样本数据。我还更新了下面的 SQLFiddle,所以你可能想检查一下。

这是SQLFiddle

于 2013-10-08T09:47:42.810 回答