有一张表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 可以免去在程序中使用递归
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 可以免去在程序中使用递归