具有递归自连接的Mysql查询
我正在尝试编写一个带有递归自连接的查询。我的桌子如下:具有递归自连接的Mysql查询,mysql,Mysql,我正在尝试编写一个带有递归自连接的查询。我的桌子如下: Manager1 Manager2 Manager3 Employe1 Manager1 Manager2 Manager3 Employe2 表1 EMP_ID Name 1 Manger1 2 Manger2 3 Manger3 4 Employ1 5 Employ2 表2 Par_EMP_ID
Manager1 Manager2 Manager3 Employe1
Manager1 Manager2 Manager3 Employe2
表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
,…,employee2
是Manager1
为部门负责人的公司的员工。Manager2
向Manager1
报告,Manager3
向Manager2
报告,这种关系保存在表2中,其中Par_EMP_ID
是报告ii的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,所以您可能想查看一下
以下是。更新:
根据您的规格,以下是解决方案:
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,所以您可能想查看一下
以下是。阅读“在此处创建表格:并给我打电话”。阅读“如果不起作用,请尝试我的回答和评论”。谢谢在这里创建您的表格:然后打电话给我。如果不起作用,请尝试我的答案和评论。谢谢你的回答。如果我只想看看Child2
和曾祖父
之间是否存在一条关系链呢?(而不是每一段感情?@Xeoncross得到了答案很好的答案。如果我只想看看Child2
和曾祖父
之间是否存在一条关系链呢?(而不是所有的关系?@Xeoncross得到了答案吗?)