oracle中关系表中的层次结构级别

时间:2014-12-10 09:34:17

标签: oracle

我有一个表员工,其中包含经理和员工的层次结构数据。

示例数据。

empId ManId
  101   100
  102   100
 1010   101
 1011   101
10101  1010

我需要找到关卡,但它没有给我正确的输出。我需要像

这样的输出
level  Emp ID Man Id
1        101     100
1        102     100
2       1010     101
2       1011     101
3      10101    1010

无论输入为Emp ID还是Man ID,输出都应保持不变。当我使用经理ID为100时,我只获取输出但是当我将值传递为10101时它不起作用

select distinct
level,
manager_id, 
employee_id
from employees
START WITH manager_id = 100
connect by   manager_id= prior employee_id
order by level

1 个答案:

答案 0 :(得分:0)

START WITH子句用于指定层次结构的根行,该行是具有101值的员工ID

请使用以下

select distinct
       level,
       manager_id, 
       employee_id
       from employees
       where level<=3
       START WITH employee_id = 101
       connect by   manager_id= prior employee_id
       order siblings by employee_id

Update1:​​ - : - 如果根行不具体,您可以删除START WITH

   select distinct
       level,
       manager_id, 
       employee_id
       from employees
       where level<=3
       connect by   manager_id= prior employee_id
       order siblings by employee_id

查看此链接以获取更多信息 Hierarchical Queries