ORACLE 层次结构查询语句 start with connect by prior

上一篇 / 下一篇  2008-07-20 18:26:47

   ORACLE提供了一个有趣的功能connect by子句,它可以对具有家族树结构的分枝进行排序。它的用途有机构或公司的各层结构,财务的科目代码等。

要使用查询遍历,需要在将数据在基表中按照层次结构进行存储。比如一个组织机构就是这样的典型例子:

实现语句:

 

SELECT column

FROM table_name

START WITH column=value

CONNECT BY PRIOR 父主键=子外键

1:在ORACLEEMP表中,每一条记录都有一个唯一标识当前雇员的empno和标识这个雇员的经理的mgr列。如果mgr为空,则该雇员是该机构的最顶级。现在要列出每个雇员的层次结构(从顶到底)

 

select lpad(' ',4*(level-1))||ename name ,empno,mgr from emp

 start with mgr is null

  connect by prior empno=mgr;

 

NAME                   EMPNO     MGR

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

KING                     7839

   JONES                7566     7839

       SCOTT            7788     7566

           ADAMS       7876     7788

       FORD             7902     7566

           SMITH        7369     7902

   BLAKE                7698     7839

       ALLEN            7499     7698

       WARD             7521     7698

       MARTIN           7654     7698

       TURNER           7844     7698

       JAMES            7900      7698

   CLARK                7782     7839

       MILLER           7934      7782

 

14 rows selected.

 

SQL>

 

从查询结果中可以看出,由于JONESBLAKECLARK的上司是KING,所以JONESMGR(经理编号)=KINGempno号,即KING的直接下级是JONESBLAKECLARK,因为他们的MGRKINGEMPNO一样。


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-12-02  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

  • 访问量: 891
  • 日志数: 23
  • 建立时间: 2008-02-17
  • 更新时间: 2008-10-30

RSS订阅

Open Toolbar