dat*_*ili 14 sql oracle hierarchical-query
假设我们有以下表格
create table Employee(
2 EMPNO NUMBER(3),
3 ENAME VARCHAR2(15 BYTE),
4 HIREDATE DATE,
5 ORIG_SALARY NUMBER(6),
6 CURR_SALARY NUMBER(6),
7 REGION VARCHAR2(1 BYTE),
8 MANAGER_ID NUMBER(3)
9 )
Run Code Online (Sandbox Code Playgroud)
和
create table job (
2 EMPNO NUMBER(3),
3 jobtitle VARCHAR2(20 BYTE)
4 )
5 /
Run Code Online (Sandbox Code Playgroud)
我对以下查询的作用感兴趣
SELECT empno, manager_id, ename
2 FROM employee
3 START WITH empno = 1
4 CONNECT BY PRIOR empno = manager_id;
Run Code Online (Sandbox Code Playgroud)
我的理解,这个代码选择empno,manager_id,ename从员工,它开始选择从该行地方empno=1,但不明白这行做了什么:
CONNECT BY PRIOR empno = manager_id;
Run Code Online (Sandbox Code Playgroud)
这是一样的:
where empno=manager_id?
Run Code Online (Sandbox Code Playgroud)
man*_*ada 11
CONNECT BY PRIOR empno = manager_id;
Run Code Online (Sandbox Code Playgroud)
这将产生递归.将返回属于下一个较低层级的所有记录.这将为所有经理及其各自的工作下属返回从上到下的层次结构.
30 (manager_id)
12
5 (manager_id)
1
7
20 (manager_id)
15
10
Run Code Online (Sandbox Code Playgroud)