我试图用递归自连接编写一个查询。我的桌子如下:
表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
是向Manager1
报告的,Manager3
是向Manager2
报告的,这种关系保持在table2
中,其中Par_EMP_ID
是reportii的EMP_ID
,EMP_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/