我有3张桌子让我们说
manager(id,name)
teamleader(id,name,associated)
雇员(ID,名称,代码)
在 teamleader 表中,相关联的是经理表的外键。
员工表格代码为经理或团队负责人的ID。
员工既是经理也是团队负责人。
我想编写一个查询来查找直接由经理和团队负责人与该经理相关联的员工。
请帮我解决我的问题。
答案 0 :(得分:1)
如果我理解你的问题你可以试试这个:
SELECT
e.id,
e.name,
IF(m1.id IS NULL,m1.id,m2.id) as manager_id
FROM
employee e
LEFT JOIN manager m1
ON m1.id = e.code
LEFT JOIN teamleader t1
ON t1.id = e.code
LEFT JOIN manager m2
ON m2.id = t1.associated
WHERE
(
m1.id IS NOT NULL
OR
(
t1.id IS NOT NULL
AND
m2.id IS NOT NULL
)
)
如果您想在特定经理上加上条件,请在最后添加:
HAVING manager_id = x
其中x是您想要的经理ID