【问题标题】:SQL Query to get all managersSQL查询获取所有经理
【发布时间】: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 将所有工人都放在经理之下。
  • 我已经在问题中添加了查询

标签: mysql sql


【解决方案1】:
select w1.id, w1.name, w2.id as manager_id, w2.name as manager_name
from worker as w1 inner join worker w2 on w1.manager_id = w2.id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 2021-11-16
    相关资源
    最近更新 更多