【发布时间】:2016-07-06 08:25:07
【问题描述】:
我有一个 SQL 表 worker,其中包含以下字段:
1. id
2. Name
3. Manager id
我试图编写一个查询来获取以下字段的列表('id'、'name'、'manager id'、'manager name')
请注意,经理 ID 也属于 工人,即经理也是工人。此外,经理还有一个经理,他再次属于同一个表 - 层次结构可以上升到 n 个经理(未知)。
到目前为止,这是我的查询
SELECT tab1.user_name, tab1.user_id, tab1.manager_id, tab2.name AS manager_name, 1 AS LEVEL FROM (SELECT tab1.name AS user_name, tab1.id AS user_id, manager_id FROM DB.user tab1 WHERE id = 1 AND active = 1) tab1 LEFT JOIN DB.user tab2 ON tab1.manager_id = tab2.id UNION SELECT tab1.user_name, tab1.user_id, tab1.manager_id, tab2.name AS manager_name, 2 AS LEVEL FROM (SELECT tab1.name AS user_name, tab1.id AS user_id, manager_id FROM DB.user tab1 WHERE manager_id = 1 AND active = 1) tab1 LEFT JOIN DB.user tab2 ON tab1.manager_id = tab2.id UNION SELECT tab1.user_name, tab1.user_id, tab1.manager_id, tab2.name AS manager_name,
3 AS LEVEL FROM (SELECT tab1.name AS user_name, tab1.id AS user_id, manager_id FROM DB.user tab1 WHERE manager_id IN (SELECT tab1.id FROM DB.user tab1 WHERE manager_id = 1 AND active = 1) AND active = 1 ) tab1 LEFT JOIN DB.user tab2 ON tab1.manager_id = tab2.id
但这让我的结果达到第 3 级层次结构,而我需要它自我扩展并获取我的结果,无论嵌套存在什么级别。
有人可以帮忙吗。
【问题讨论】:
-
到目前为止你尝试了什么?? stackoverflow.com/questions/16232426/…
-
听起来像是功课。向我们展示您的尝试以及您遇到的具体问题。
-
对不起,我的错,我拼错了要求,需要的是通过经理 ID 将所有工人都放在经理之下。
-
我已经在问题中添加了查询