ballpenxp

博客园 首页 新随笔 联系 订阅 管理
有一张表T_DEP,以ID和F_ID关联,类似:
ID   DEPNAME  F_ID
1     总经室            -1
2     市场部            1
3     行政部            1
4     食堂                3
5      医务室           3

形成了一个树形结构,如果要在程序中进行一次遍历,正常都会使用到递归,在oracel中可以使用CONNECT BY来直接进行遍历

SELECT  *   FROM  T_DEP  CONNECT BY  ID =  PRIOR   F_ID  START   WITH   ID = 4
这条语句表示从ID = 4的部门开始,从树的底部向上进行遍历,结果为:
4     食堂                3
3     行政部            1
1     总经室            -1

SELECT  *   FROM  T_DEP  CONNECT BY PRIOR   ID =   F_ID  START   WITH   ID = 3
这条语句表示从ID=3的部门开始,从上向下进行遍历,结果为:
3     行政部            1
5      医务室           3
4     食堂                3

在oracle中使用CONNECT BY 可以免去在程序中使用递归





posted on 2007-09-08 14:07  ballpenxp  阅读(364)  评论(0编辑  收藏  举报