我有一张表,我在其中拉入了“经理”和他相关的“员工”,但是我在获得正确语法方面遇到了一些问题。
我的表结构:
经理:
User_ID | User_Name
1 | jay
2 | matt
3 | john
4 | Employee1
5 | Employee2
6 | Employee3
员工:
Parent_ID | Employee_ID
1 4
1 5
1 6
所以你在这里看到的是我想为某个特定的经理召集所有员工。
尝试查询:
select managers.user_name
from managers
ifnull(group_concat(distinct(employees.employee_id) SEPARATOR ';'), 'Nobody Under You') "Employees"
left join employees on employees.employee_id=managers.id
group by managers.user_name
我希望它有:
jay --> Employee1; Employee2; Employee3
但是它有:
jay --> 4;5;6
我的问题是我想要他们关联的用户名而不是员工 ID...有人可以帮忙吗?>
最佳答案
Managers
表中有员工,这很奇怪,但无论如何,您都需要再次加入同一个表。例如
SELECT
Managers.User_Name,
COALESCE(GROUP_CONCAT(emp.User_Name SEPARATOR ';'), 'Nobody Under You') AS 'Employees'
FROM Managers
LEFT JOIN Employees ON Managers.User_ID = Employees.Parent_ID
LEFT JOIN Managers emp ON Employees.Employee_ID = emp.User_ID
GROUP BY Managers.User_Name
SQL fiddle ~ http://sqlfiddle.com/#!9/698e5d/7
关于mysql - 在查询中多次从 id 字段中提取关联的 user_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33748690/