我有一个名为" Employees"列#34;电子邮件"是指员工的电子邮件和“" MgrEmail"是指他们的直接经理的电子邮件。
我创建了一个查询,该查询应该找到管理层次结构中的所有第三级员工。然而,它并没有检索到正确的记录,我不确定为什么。
SELECT *
FROM Employees
WHERE MgrEmail IN
(SELECT Email
FROM Employees
WHERE MgrEmail IN
(SELECT Email
FROM Employees
WHERE MgrEmail='test@test.com'))
答案 0 :(得分:0)
假设经理的标记是他的经理电子邮件是NULL
,那么一个选项就是从第三级员工开始,只做两个Employees
表的自联接,然后停止当我们发现经理高出两步时。
SELECT e1.*
FROM Employees e1
INNER JOIN Employees e2
ON e1.MgrEmail = e2.Email
INNER JOIN Employees e3
ON e2.MgrEmail = e3.Email
WHERE e3.MgrEmail IS NULL -- assuming that a manager would himself have no manager