mysql获取直接和间接关联的记录

时间:2013-05-10 09:49:04

标签: mysqli

我有3张桌子让我们说

  

manager(id,name)
teamleader(id,name,associated)
  雇员(ID,名称,代码)

teamleader 表中,相关联的是经理表的外键。

员工表格代码为经理或团队负责人的ID。

员工既是经理也是团队负责人。

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

请帮我解决我的问题。

1 个答案:

答案 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