ORACLE 階層查詢語句 start with connect by 你用過嗎?

來源:互聯網
上載者:User

ORACLE 提供了一個有趣的功能 connect by 子句,它可以對具有家族樹結構的分枝進行排序。它的用途有 機構或公司的各層結構,財務的科目代碼等。

要使用查詢遍曆,需要在將資料在基表中按照階層進行儲存。比如一個組織機構就是這樣的典型例子:

實現語句:

 

SELECT column

FROM  table_name

START WITH  column=value

CONNECT  BY  PRIOR  父主鍵=子外鍵

例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;

 

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>

 

從查詢結果中可以看出,由於JONES、BLAKE、CLARK的上司是KING,所以JONES等MGR(經理編號)=KING的empno號,即KING的直接下級是JONES、BLAKE、CLARK,因為他們的MGR與KING的EMPNO一樣。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.