Oracle的Connect by指定查询的逻辑,Start with指定遍历树的根节点

Connect by指定查询的逻辑

Start with指定遍历树的根节点

Create Table Company(
eid int,
elead int,
ename varchar(8),
esalary int,
edeptno varchar(8));
 
insert into Company values(1,0,'king',100000,'001');---CEO
insert into Company values(2,1,'jack',50000,'002');---经理1
insert into Company values(3,1,'arise',60000,'003');--经理2
insert into Company values(4,2,'scott',30000,'002');---经理1手下员工1
insert into Company values(5,2,'tiger',25000,'002');---经理1手下员工2
insert into Company values(6,3,'wudde',23000,'003');---经理2手下员工1
insert into Company values(7,3,'joker',21000,'003');---经理2手下员工2
----分层查询:深度优先遍历
     select eid,elead,ename,prior ename as lname,esalary, level loopn----循环次数(层次)看深度优先遍历
     from Company
     start with  eid=1---指定了根结点
     connect by  elead = prior eid---向下查询
     
     select eid,elead,ename,prior ename as lname,esalary,level loopn
     from Company
     start with  elead=0
     connect by elead = prior eid;
----向上查询 
     select eid,elead,ename as lead_name,prior ename as emp_name,esalary,level loopn
     from Company
     start with  elead=2
     connect by eid = prior elead 
     order by elead;
   
     select eid,elead,ename as lead_name,prior ename as emp_name,esalary, level loopn
     from Company
     start with  eid=2
     connect by eid = prior elead 
     order by elead;

猜你喜欢

转载自blog.csdn.net/CherishPrecious/article/details/81281978
今日推荐