數據庫的表中存放樹形數據最常用的方式是tb_dept(dept_id,dept_name,parent_id),查詢某個部門的所有子部門,并把結
果組織成樹形結構是我們經常需要解決的一個問題,oracle提供了查詢樹形數據的語法。他可以查詢數中某個節點的所有子節點,結果級按展開一個樹的順序
出現,并且可以列出某節點所處的層,便于我們處理數據,示例如下:
drop table test_dept;
create table test_dept
(dept_id varchar2(20),dept_name varchar2(40),parent_id varchar2(20));
insert into test_dept values ('0','dept1',null);
insert into test_dept values ('1','dept11','0');
insert into test_dept values ('11','dept11','1');
insert into test_dept values ('12','dept12','1');
insert into test_dept values ('2','dept2','0');
insert into test_dept values ('21','dept21','2');
insert into test_dept values ('211','dept211','21');
insert into test_dept values ('212','dept212','21');
insert into test_dept values ('22','dept22','2');
select dept_id,dept_name,level
from test_dept
start with dept_id='0'
connect by prior dept_id=parent_id;
結果如下:
DEPT_ID
DEPT_NAME
LEVEL
-------------------- ---------------------------------------- ----------
0
dept1
1
1
dept11
2
11
dept11
3
12
dept12
3
2
dept2
2
21
dept21
3
211
dept211
4
212
dept212
4
22
dept22
3
9 rows selected