oracle中查詢樹形數據的sql語句
數據庫的表中存放樹形數據最常用的方式是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