oracle树查询的最重要的就是select…start with…connect by…prior语法了。
例如存在如下表:
SELECT id,tid
FROM table
得到如下表,其中,id是节点,tid是父节点。
id, tid
1--------
2-------- 1
3-------- 1
4-------- 2
5-------- 4
6-------- 2
想根据某个id查出它本身,及所有子孙节点,作为一条记录
比如:
id cid
1-------- 1,2,3,4,5,6
2-------- 2,4,5,6
3-------- 3
4-------- 4,5
5-------- 5
6-------- 6
【SQL语句--oracle】
查找一个节点的所有直属子节点(所有后代)。
<pre name="code" class="sql" style="color: rgb(75, 75, 75); font-size: 13px; line-height: 19.5px;">SELECT *
FROM table m
START WITH m.id = 1
CONNECT BY m.tid = PRIOR m.id;
查找一个节点的所有直属父节点(祖宗)。
SELECT *
FROM table m
START WITH m.id = X
CONNECT BY <span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;">PRIOR </span>m.tid = m.id;
【参考】
1. http://www.cnblogs.com/linjiqin/archive/2013/06/24/3152674.html