oracle层级关联,oracle学习之:CONNECT BY层次化查询

层次化查询,顾名思义就是把查询结果有层次的呈现出来。层次化查询结果类似于树状结构,

最顶端的是“根节点”,

下面是“父节点”,

没有子节点的是“叶节点”。

为了让一个或多个表具有层次关系,必须使用相关的字段将表关联起来。比如SCOTT用户下的SCOTT.EMP表中的EMPNO和MGR列。

基本语法为:

[START WITH conditiona1] CONNECT BY condition2

START WITH conditiona1:用来指定根节点,condition1中可以加子查询。

CONNECT BY condition2:condition2中必须包含PRIOR关键字,用来指定列是来自父行。PRIOR可以位于比较操作符的任何一方。condition不能包含子查询。

如:

打开sql窗口:

SELECT T.EMPNO,T.MGR,T.ENAME,T.HIREDATE

FROM SCOTT.EMP T

START WITH T.MGR IS NULL

CONNECT BY PRIOR T.EMPNO = T.MGR;

EMPNO MGR ENAME HIREDATE

----------------------------------------------------------------------

1 7839 KING 1981/11/17

2 7566 7839 JONES 1981/4/2

3 7788 7566 SCOTT 1987/4/19

4 7876 7788 ADAMS 1987/5/23

5 7902 7566 FORD 1981/12/3

6 7369 7902 SMITH 1980/12/17

7 7698 7839 BLAKE 1981/5/1

8 7499 7698 ALLEN 1981/2/20

9 7521 7698 WARD 1981/2/22

10 7654 7698 MARTIN 1981/9/28

11 7844 7698 TURNER 1981/9/8

12 7900 7698 JAMES 1981/12/3

13 7782 7839 CLARK 1981/6/9

14 7934 7782 MILLER 1982/1/23

为了知道当前查询树状结构所处的层次,可以使用level伪列。加入level伪列后显示如下:

SELECT LEVEL,

LPAD(' ',2 * (LEVEL - 1)) || T.ENAME "EmpName",

T.HIREDATE,

T.SAL

FROM SCOTT.EMP T

START WITH T.MGR IS NULL

CONNECT BY T.MGR = PRIOR T.EMPNO;

LEVEL EmpName HIREDATE SAL 1 1 KING 1981/11/17 5000.00 2 2 JONES 1981/4/2 2975.00 3 3 SCOTT 1987/4/19 3000.00 4 4 ADAMS 1987/5/23 1100.00 5 3 FORD 1981/12/3 3000.00 6 4 SMITH 1980/12/17 800.00 7 2 BLAKE 1981/5/1 2850.00 8 3 ALLEN 1981/2/20 1600.00 9 3 WARD 1981/2/22 1250.00 10 3 MARTIN 1981/9/28 1250.00 11 3 TURNER 1981/9/8 1500.00 12 3 JAMES 1981/12/3 950.00 13 2 CLARK 1981/6/9 2450.00 14 3 MILLER 1982/1/23 1300.00

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值