到底先有鸡还是先有蛋?

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
 
 

posted on 2005-08-23 18:25 蚂蚱 阅读(2862) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 
<2005年8月>
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

常用链接

留言簿(3)

随笔档案

收藏夹

eclipse

搜索

最新评论

阅读排行榜

评论排行榜

maja