一、樹型表結構:
節點ID 上級ID 節點名稱
二、公式:
select 節點ID,節點名稱,level
from 表
connect by prior 節點ID=上級節點ID
start with 上級節點ID=節點值
說明:
1、常見的樹形結構為公司組織機構、地區……
2、求節點ID以上的結構,或以上的結構,將“節點ID=上級節點ID”左右順序換一下即可。
3、Level為Oracle的特殊字段,表示“層”的意思。當前節點ID的下一層節點為“1”。
測試SQL: 1,建立表結構
create table Dept(
DepartNO varchar2(10),
DepartName varchar2(20),
TopNo varchar2(10)
);
插入數據:
insert into Dept values('001',' 董事會','0');
commit;
insert into Dept values('002','總裁辦 ','001');
commit;
insert into Dept values('003','財務部 ','001');
commit;
insert into Dept values('004','市場部 ','002');
commit;
insert into Dept values('005','公關部 ','002');
commit;
insert into Dept values('006','銷售部 ','002');
commit;
insert into Dept values('007','分銷處 ','006');
commit;
insert into Dept values('008','業務拓展處','004');
commit;
insert into Dept values('009','銷售科','007');
commit;
1,向前查 (從查詢本身一直到最上面的機構)
比如:
select distinct departno,departname,level
from dept
connect by prior topno=departno
start with
departno='005';
2,向后查:(從查詢本身一直到最下面的機構)
select distinct departno,departname,level
from dept
connect by prior departno=topno
start with
topno='001';
COND2是連接條件,其中用PRIOR表示上一條記錄,比如 CONNECT BY PRIOR ID=PRAENTID就是說上一條記錄的ID(比如根記錄)是(下一條)本條記錄的PRAENTID,即本記錄的父親是上一條記錄。