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

ORACLE提供了一个有趣的功能connect by子句,它可以对具有家族树结构的分枝进行排序。它的用途有机构或公司的各层结构,财务的科目代码等。要使用查询遍历,需要在将数据在基表中按照层次结构进行存储。比如一个组织机构就是这样的典型例子:

实现语句:

SELECT column

FROMtable_name

START WITHcolumn=value

CONNECTBYPRIOR父主键=子外键

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;

NAMEEMPNOMGR

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

KING7839

JONES75667839

SCOTT77887566

ADAMS78767788

FORD79027566

SMITH73697902

BLAKE76987839

ALLEN74997698

WARD75217698

MARTIN76547698

TURNER78447698

JAMES79007698

CLARK77827839

MILLER79347782

14 rows selected.

SQL>

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

转载:http://space.itpub.net/7232789/viewspace-405435


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章