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


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