oracle 树形查询

oracle里面实现树形查询比mssql要轻松的多:

今天学习的 记录下:

 

例子:

建表

 

Sql代码 复制代码 收藏代码
  1. create table Dept(    
  2. DepartNO varchar2(10),   
  3. DepartName varchar2(20),   
  4. TopNo varchar2(10)   
  5. );    
create table Dept( 
DepartNO varchar2(10),
DepartName varchar2(20),
TopNo varchar2(10)
);  

  初始化:

Java代码 复制代码 收藏代码
  1.  insert into Dept values('001',' 董事会','0'); commit;   
  2.  insert into Dept values('002','总裁办 ','001'); commit;   
  3.  insert into Dept values('003','财务部 ','001'); commit;    
  4. insert into Dept values('004','市场部 ','002'); commit;    
  5. insert into Dept values('005','公关部 ','002'); commit;    
  6. insert into Dept values('006','销售部 ','002'); commit;    
  7. insert into Dept values('007','分销处 ','006'); commit;    
  8. insert into Dept values('008','业务拓展处','004'); commit;    
  9. insert into Dept values('009','销售科','007'); commit;   
 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; 

 

 

根据输入节点向下查询(包括自身节点信息)

Sql代码 复制代码 收藏代码
  1. select distinct departno,departname,level    
  2. from dept    
  3. connect by prior topno=departno    
  4. start with departno='005';  
select distinct departno,departname,level 
from dept 
connect by prior topno=departno 
start with departno='005';

  

根据输入节点向下查询(不包括自身节点信息)

Java代码 复制代码 收藏代码
  1. select distinct departno,departname,level    
  2. from dept    
  3. connect by prior topno=departno    
  4. start with topno='005';    
select distinct departno,departname,level 
from dept 
connect by prior topno=departno 
start with topno='005';  

  

根据输入节点向上查询 

Sql代码 复制代码 收藏代码
  1. select distinct departno,departname,level  
  2. from dept    
  3. connect by prior departno =topno    
  4. start with departno='005';   
posted @ 2013-09-03 12:00  一只小鸟  阅读(387)  评论(0编辑  收藏  举报