您的位置:首页 > 数据库 > Oracle

Oracle层次化查询(递归查询)

2010-07-25 14:47 218 查看
Oracle层次化查询即递归查询适宜应用在由表结构维护层次关系的场合中,通常我们在处理这类问题时一般借助于表的自连接,但是灵活性有限,下面对Oracle层次化查询作一阐述:假定存在一张员工信息表emp,其包含如下字段:empno(员工编号),ename(员工姓名),manger(领导编号),现要求按员工层次顺序显示员工信息。sql代码如下:

select * from emp

start with manger is null

connect by manger=prior empno

order siblings by ename;

emp表

empnoenamemanager
AA
JJB
DDB
EEB
BBA
FFB
GGC
HHC
CCA
下面对上述语句的执行过程作一阐述:

首先根据start with子句确定根节点,在此处根节点通过manger is null确定,

然后根据connect by子句确定层次关系是通过哪些字段进行关联而产生的,在此处为manager=prior empno,

需要重点指出的是prior关键字的含义 ,它指明了递归的方向,prior所在的一侧为level高的一侧,order siblings by指明对处在同一层级的兄弟节点进行排序.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: