我正在尝试使用递归自联接编写查询。我的表格如下:
表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
是 reporter 的 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查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19243690/