我试图用递归自连接编写一个查询。我的桌子如下:
表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

在上表中,Manager1Manager2,…,Employe2是一个Manager1是部门主管的公司的员工,Manager2是向Manager1报告的,Manager3是向Manager2报告的,这种关系保持在table2中,其中Par_EMP_ID是reportii的EMP_IDEMP_ID列是报告者的id。现在我想得到如下结果:
Manager1      Manager2   Manager3  Employe1
Manager1      Manager2   Manager3  Employe2

最佳答案

更新:
根据你的规格,这是解决方案:

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

关于mysql - 具有递归自我JOIN的MySQL查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19243690/

10-11 01:21