我有两个表Employee和Department这个图像显示了每个员工的经理。我想写一个SQL查询,它给我一个所有主管的列表(经理,经理经理......)。
我只想要一个列,在给定特定员工时显示主管列表。
E.g。如果我给员工id = 202,那么我应该收到200,130
|supervisor |
+-----------+
| 200 |
| 130 |
我有这个查询
WITH emp_dept as(
SELECT employee_id,manager_id
FROM employee,department
WHERE employee.dept_id= department.dept_id
)
WITH recursive p as (
select e1.employee_id, e1.manager_id
from emp_dept e1
where employee_id = 202
union all
select e2.employee_id , e2.manager_id
from p
join emp_dept e2 ON e2.employee_id = p.manager_id
)
select manager_id
from p
`
我无法使用它。我正在使用pgadmin4。
如果有人可以帮我解决这个问题,我会非常感激
答案 0 :(得分:0)
我认为你可以对Oracle使用“分层查询”并试试这个:
select manager_id supervisor
from employee
start with employee_id = 202
connect by nocycle employee_id = prior manager_id;
答案 1 :(得分:0)
这是我的问题的解决方案
with recursive p as (
WITH emp_dept as(
SELECT employee_id,manager_id
FROM employee,department
WHERE employee.dept_id= department.dept_id
)
select e1.employee_id, e1.manager_id
from emp_dept e1
where e1.employee_id = 202
union
select e2.employee_id , e2.manager_id
from p
join emp_dept e2 ON e2.employee_id = p.manager_id
)
select manager_id
from p