用SQL描述树

/*40条(1层)
SELECT COUNT(*) FROM t01_mwfl WHERE AZFSDM=01 AND LEVEL=1 START WITH PID=0 CONNECT BY  PRIOR ID=PID
*/
SELECT * FROM t01_mwfl WHERE AZFSDM=01 AND LEVEL=1 START WITH PID=0 CONNECT BY  PRIOR ID=PID 

SELECT LEVEL FROM t01_mwfl WHERE AZFSDM=01 AND LEVEL=1   START WITH PID=0 CONNECT BY  PRIOR ID=PID 

/* 210条(2层)
SELECT COUNT(*) FROM t01_mwfl WHERE LEVEL =2 AND AZFSDM=01  START WITH PID=0 CONNECT BY  PRIOR ID=PID
*/
SELECT * FROM t01_mwfl WHERE LEVEL =2 AND AZFSDM=01  START WITH PID=0 CONNECT BY  PRIOR ID=PID 

SELECT LEVEL FROM t01_mwfl WHERE LEVEL =2 AND AZFSDM=01  START WITH PID=0 CONNECT BY  PRIOR ID=PID 

/*395条(3层)
SELECT COUNT(*) FROM t01_mwfl WHERE LEVEL=3 AND AZFSDM=01  START WITH PID=0 CONNECT BY  PRIOR ID=PID 
*/
SELECT * FROM t01_mwfl WHERE LEVEL=3 AND AZFSDM=01  START WITH PID=0 CONNECT BY  PRIOR ID=PID 

SELECT LEVEL FROM t01_mwfl WHERE LEVEL=3 AND AZFSDM=01  START WITH PID=0 CONNECT BY  PRIOR ID=PID 


select * from WQGM_2V.t01_mwfl where  azfsdm='01' and pid=0 and id  in 
(
--通过字符串处理
select substr(substr(path,2),1,instr(substr(path,2),'/')-1) pid  from (
--取大于某层的树路径
SELECT sys_connect_by_path(id,'/') as path FROM WQGM_2V.t01_mwfl WHERE LEVEL>2 AND AZFSDM=01  START WITH PID=0 CONNECT BY  PRIOR ID=PID
)
)


/*三层*/

 /**/
SELECT ID,NAME,ROWNUM FROM WQGM_2V.t01_mwfl
WHERE PID=0 
AND AZFSDM='01' 
AND ID IN
(
   SELECT ID FROM WQGM_2V.t01_mwfl  MINUS 
(
   SELECT ID FROM WQGM_2V.t01_mwfl  MINUS 
   SELECT PID FROM  WQGM_2V.t01_mwfl 
)
)
 ORDER BY ID
 /**/
 SELECT ID,NAME,ROWNUM,LEVEL FROM WQGM.t01_mwfl 
WHERE PID=0 
AND AZFSDM='01'
AND ID IN
(
   SELECT ID FROM WQGM.t01_mwfl  MINUS
(
   SELECT ID FROM WQGM.t01_mwfl  MINUS 
   SELECT PID FROM  WQGM.t01_mwfl 
)
)
 START WITH PID=0 CONNECT BY PRIOR ID=PID 
 ORDER BY ID

/*四层*/

SELECT b.id,a.path,a.name FROM
(
SELECT id FROM WQGM.t01_mwfl MINUS
(
SELECT id FROM WQGM.t01_mwfl MINUS
SELECT pid FROM WQGM.t01_mwfl
)
) b
,
(
SELECT id,sys_connect_by_path(id,'/') as path,sys_connect_by_path(name,'/') as name,level as lv
FROM WQGM.t01_mwfl WHERE azfsdm=01 START WITH pid=0 CONNECT BY PRIOR id=pid
) a
WHERE a.id=b.id AND lv>1

 

 



 

转载于:https://www.cnblogs.com/siyunianhua/p/3449819.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值