读书人

sql查出一棵树中的所有叶子节点或者

发布时间: 2012-01-15 22:57:49 作者: rapoo

sql查出一棵树中的所有叶子节点,或者所有的双亲节点
如题。

[解决办法]
SELECT LPAD( ' ', 2*level-1)||SYS_CONNECT_BY_PATH(last_name, '/ ') "Path "
FROM hr.employees
START WITH last_name = 'Kochhar '
CONNECT BY PRIOR employee_id = manager_id
ORDER SIBLINGS BY last_name



Path
----------------------------------------
/Kochhar
/Kochhar/Baer
/Kochhar/Greenberg
/Kochhar/Greenberg/Chen
/Kochhar/Greenberg/Faviet
/Kochhar/Greenberg/Popp
/Kochhar/Greenberg/Sciarra
/Kochhar/Greenberg/Urman
/Kochhar/Higgins
/Kochhar/Higgins/Gietz
/Kochhar/Mavris
/Kochhar/Whalen
已选择12行。

解释:
START WITH:指定root
CONNECT BY:指定父子关系
PRIOR:指定谁具有父亲row的资格。此例中,表示如果row1.employee_id=row2.manager_id,则row1是row2的父亲row
level: 表示等级了。
SIBLINGS:表示在相同level中排序。
SYS_CONNECT_BY_PATH( , ):x是column,c是字符。返回x的path,用c作为分界符,从root到本节点。


[解决办法]
level是使用connet by 可以引用的系位,就像rownum一.LZ自己去好好看看相籍,就明白是怎回事的.

读书人网 >oracle

热点推荐