SQL 查询以获取主管层次结构列表。员工 --> 主管 --> 主管

SQL query to get the list of supervisor hierarchy. employee --> supervisor --> supervisor

我有两个表 Employee 和 Department 此图像显示每个员工的经理。我想编写一个 SQL 查询,为我提供所有主管(经理、经理的经理..)的列表。

我只想要一个列,在给定特定员工时显示主管列表。

例如如果我给员工 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。

如果有人能帮我解决这个问题,我将不胜感激

我认为您可以使用 "hierarchical queries" for Oracle 并试试这个:

select manager_id supervisor 
from employee
start with employee_id = 202
connect by nocycle employee_id = prior manager_id;

这就是我的问题的答案

  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