我有 3 张桌子让我们说
经理(ID,姓名)
团队领导(ID,姓名,关联)
员工(ID,姓名,代码)
在teamleader表中关联的是manager表的外键。
在员工表中,代码是manager 或 teamleader的 id 。
员工在经理和团队负责人之下。
我想编写一个查询来查找与该经理相关联的经理和团队负责人直属的员工。
请帮我解决我的问题。
我有 3 张桌子让我们说
经理(ID,姓名)
团队领导(ID,姓名,关联)
员工(ID,姓名,代码)
在teamleader表中关联的是manager表的外键。
在员工表中,代码是manager 或 teamleader的 id 。
员工在经理和团队负责人之下。
我想编写一个查询来查找与该经理相关联的经理和团队负责人直属的员工。
请帮我解决我的问题。
如果我正确理解你的问题,你可以试试这个:
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