MySQL查询跟关系?

r6l8ljro  于 2023-01-12  发布在  Mysql
关注(0)|答案(1)|浏览(138)

我在这里询问更有经验的人,是否有一种方法可以创建一个查询来跟踪表中的关系。
例如,我有一个人的表,每个人都有一列显示他们的主管是谁,这是同一个表中另一个人的ID。
因此,表“people”将具有:
ID、名字、姓氏、主管。
是否有一种方法可以创建一个查询,该查询将返回所有主管的列表,直到没有主管为止,并返回向他们报告的所有人员(及其报告)的列表,直到没有主管为止?
我现在的想法是,我需要一个PHP中的while循环用于管理器(总是一对一),一个while循环用于前置任务(可能会有很多),所以需要一个while循环来遍历所有的迭代。
然后实际上将所有这些放入一个数组中进行显示。
我担心的是,这可能是一个服务器密集型进程,而且速度相当慢。
是否有MySQL查询可以跟踪虚拟面包屑并返回结果?
感谢你的帮助。

z31licg0

z31licg01#

SELECT  s.supervisor,
        e.last_name,
        e.first_name
    FROM people AS e
    JOIN people AS s  ON s.id = e.supervisor
    ORDER BY s.supervisor, e.last_name, e.first_name

SELECT  s.supervisor AS Boss
        GROUP_CONCAT(e.last_name) AS Reports
    FROM people AS e
    JOIN people AS s  ON s.id = e.supervisor
    GROUP BY s.supervisor
    ORDER BY s.supervisor

相关问题