Connect… by …是在结构化查询中用到的,其基本语法如下所示:
其中cond3是可选的,cond1是根节点的限定语句,当然也可以放宽限定条件,以取得多个根节点,实际上就是多棵树
Cond2是连接条件,其中用PRIOR表示上一条记录,比如
就是说上一条的记录的ID是本条记录的parentid。
对于节点间的父子关系,prior运算符在一侧表示父节点,在另一侧表示子节点,从而确定查找树结构是自顶向下还是自底向上。
下面分别就自顶向下和自底向上举2个例子:
第一个例子:自底向上
[img]http://dl.iteye.com/upload/attachment/457568/2e278f3d-0e54-326d-88e0-18e29f88f22b.jpg[/img]
查找叶节点为0104020101的所有父节点
第二个例子:自顶向下
[img]http://dl.iteye.com/upload/attachment/457570/528d9e47-3ba9-354d-9506-80493cd988c7.jpg[/img]
查找以0101为根节点的所有子节点
Select … from tablename start by cond1
Connect cond2 where cond3
其中cond3是可选的,cond1是根节点的限定语句,当然也可以放宽限定条件,以取得多个根节点,实际上就是多棵树
Cond2是连接条件,其中用PRIOR表示上一条记录,比如
connect by prior id=parentid
就是说上一条的记录的ID是本条记录的parentid。
对于节点间的父子关系,prior运算符在一侧表示父节点,在另一侧表示子节点,从而确定查找树结构是自顶向下还是自底向上。
下面分别就自顶向下和自底向上举2个例子:
第一个例子:自底向上
[img]http://dl.iteye.com/upload/attachment/457568/2e278f3d-0e54-326d-88e0-18e29f88f22b.jpg[/img]
查找叶节点为0104020101的所有父节点
Select * from table t start with t.yae049=’0104020101’ connect by prior t.yae100=t.yae049
第二个例子:自顶向下
[img]http://dl.iteye.com/upload/attachment/457570/528d9e47-3ba9-354d-9506-80493cd988c7.jpg[/img]
查找以0101为根节点的所有子节点
Select * from table t start with yae100=’0101’ connect by prior t.yae049=t.yae100