0

我有 3 张桌子让我们说

经理(ID,姓名)
团队领导(ID,姓名,关联)
员工(ID,姓名,代码)

teamleader表中关联的是manager表的外键。

员工表中,代码是manager 或 teamleader的 id 。

员工在经理和团队负责人之下。

我想编写一个查询来查找与该经理相关联的经理和团队负责人直属的员工。

请帮我解决我的问题。

4

1 回答 1

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

于 2013-05-10T11:20:03.290 回答