如何使用 oracle connect by prior 同时获取 child 和一个上层 parent 信息?

How do I get both the child and one upper level parent information by using oracle connect by prior?

我想通过使用 oracle connect by prior 获得 child 和一个上层 parent 信息?

例如,以下查询检索 child 信息和 parent id,

SELECT last_name, employee_id, manager_id, LEVEL
  FROM employees
  START WITH employee_id = 100
  CONNECT BY PRIOR employee_id = manager_id

但我想获得 parent 信息也像

  LAST_NAME                 EMPLOYEE_ID MANAGER_ID      LEVEL   MANAGER_NAME
 ------------------------- ----------- ---------- ----------------------------
 King                              100                     1         ?
 Cambrault                         148        100          2         ?
 Bates                             172        148          3         ?
 Bloom                             169        148          3         .
 Fox                               170        148          3         .

如何处理这个问题,当我通过先验连接选择 childs 后应用左连接时,objects 顺序正在混合。

您可以参考select列表中的prior值:

SELECT last_name, employee_id, manager_id, LEVEL, prior last_name as manager_name
  FROM employees
  START WITH employee_id = 100
  CONNECT BY PRIOR employee_id = manager_id;

LAST_NAME                 EMPLOYEE_ID MANAGER_ID      LEVEL MANAGER_NAME            
------------------------- ----------- ---------- ---------- -------------------------
King                              100                     1                          
Kochhar                           101        100          2 King                     
Greenberg                         108        101          3 Kochhar                  
Faviet                            109        108          4 Greenberg                
...
Cambrault                         148        100          2 King                     
Bates                             172        148          3 Cambrault                
Bloom                             169        148          3 Cambrault                
Fox                               170        148          3 Cambrault                
...