日期:2014-05-16  浏览次数:20511 次

关于Oracle的结构化查询的问题
Connect… by …是在结构化查询中用到的,其基本语法如下所示:
Select … from tablename start by cond1
Connect cond2 where cond3

其中cond3是可选的,cond1是根节点的限定语句,当然也可以放宽限定条件,以取得多个根节点,实际上就是多棵树
Cond2是连接条件,其中用PRIOR表示上一条记录,比如
connect by prior id=parentid 

就是说上一条的记录的ID是本条记录的parentid。
   对于节点间的父子关系,prior运算符在一侧表示父节点,在另一侧表示子节点,从而确定查找树结构是自顶向下还是自底向上。
   下面分别就自顶向下和自底向上举2个例子:
   第一个例子:自底向上

   查找叶节点为0104020101的所有父节点
  
   Select * from table t start with t.yae049=’0104020101’ connect by prior t.yae100=t.yae049
   

  
   第二个例子:自顶向下  

   查找以0101为根节点的所有子节点
   Select * from table t start with yae100=’0101’ connect by prior t.yae049=t.yae100