ORACLE提供了一個有趣的功能connect by子句,它可以對具有家族樹結構的分枝進行排序。它的用途有機構或公司的各層結構,財務的科目代碼等。要使用查詢遍歷,需要在將數據在基表中按照層次結構進行存儲。比如一個組織機構就是這樣的典型例子: 實現語句: SELECT column FROMtable_name START WITHcolumn=value CONNECTBYPRIOR父主鍵=子外鍵 例1:在ORACLE的EMP表中,每一條記錄都有一個唯一標識當前僱員的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 -------------------------------------- JONES75667839 SCOTT77887566 ADAMS78767788 FORD79027566 SMITH73697902 BLAKE76987839 ALLEN74997698 WARD75217698 MARTIN76547698 TURNER78447698 JAMES79007698 CLARK77827839 MILLER79347782 14 rows selected. SQL> 從查詢結果中可以看出,由於JONES、BLAKE、CLARK的上司是KING,所以JONES等MGR(經理編號)=KING的empno號,即KING的直接下級是JONES、BLAKE、CLARK,因爲他們的MGR與KING的EMPNO一樣。
轉載:http://space.itpub.net/7232789/viewspace-405435