IT/DataBase

[Oracle]ORACLE ๊ณ„์ธตํ˜• ์ฟผ๋ฆฌ

์•Œ ์ˆ˜ ์—†๋Š” ์‚ฌ์šฉ์ž 2022. 11. 29.

๋ชฉ์ฐจ

    ํ…Œ์ด๋ธ”์— ๊ณ„์ธตํ˜• ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉ(์กฐ์ง, ์‚ฌ์›, ๋ฉ”๋‰ด๋“ฑ์˜ ์ˆœํ™˜๊ด€๊ณ„ ๋“ฑ์— ์‚ฌ์šฉ๋จ)

    SELECT ... 
           [ CONNECT_BY_ISLEAF ISLEAF 
      FROM ํ…Œ์ด๋ธ”๋ช… 
     START WITH condition
    CONNECT BY PRIOR condition AND condition;
    -- START WITH์ ˆ  |  ๊ณ„์ธต๊ตฌ์กฐ ์ „๊ฐœ์˜ ์‹œ์ž‘ ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ตฌ๋ฌธ
    -- CONNECT BY ์ ˆ  |  ๋‹ค์Œ์— ์ „๊ฐœ๋  ์ž์‹ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ตฌ๋ฌธ
    -----------------------------------------------------------------
    -- ๊ณ„์ธตํ˜•์ฟผ๋ฆฌ
    ------------------------------------------------------------------
    --PRIOR ์ž์‹ = ๋ถ€๋ชจ _ ๋ถ€๋ชจ -> ์ž์‹ ๋ฐฉํ–ฅ์œผ๋กœ ์ „๊ฐœ
    --PRIOR ๋ถ€๋ชจ = ์ž์‹ _ ์ž์‹ -> ๋ถ€๋ชจ ๋ฐฉํ–ฅ์œผ๋กœ ์ „๊ฐœ
    
    --1. ์ˆœ๋ฐฉํ–ฅ ์ „๊ฐœ
    SELECT LEVEL, ENAME,
           LPAD(' ', 4 * (LEVEL-1)) || EMPNO ์‚ฌ์›, 
           MGR, 
           CONNECT_BY_ISLEAF ISLEAF 
      FROM EMP 
      START WITH MGR IS NULL 
      CONNECT BY PRIOR EMPNO = MGR;

    --2. ์—ญ๋ฐฉํ–ฅ ์ „๊ฐœ
    SELECT LEVEL, ENAME,
           LPAD(' ', 4 * (LEVEL-1)) || EMPNO ์‚ฌ์›, 
           MGR, 
           CONNECT_BY_ISLEAF ISLEAF 
      FROM EMP 
     START WITH EMPNO = 7876 
     CONNECT BY PRIOR MGR = EMPNO;

    --3. ๋ฃจํŠธ์™€ ์ˆœ์ฐจ์  ๊ณ„์ธต๊ฒฝ๋กœ
    SELECT CONNECT_BY_ROOT EMPNO ๋ฃจํŠธ์‚ฌ์›, 
           SYS_CONNECT_BY_PATH(EMPNO, '/') ๊ฒฝ๋กœ, 
           EMPNO, 
           MGR 
      FROM EMP 
     START WITH MGR IS NULL 
     CONNECT BY PRIOR EMPNO = MGR;

     

    ์ฐธ์กฐ :

    https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=dlscjf1505&logNo=220868957220

     

    ์˜ค๋ผํด ๊ณ„์ธตํ˜• ์ฟผ๋ฆฌ _ ORACLE

    ๊ณ„์ธตํ˜• ์ฟผ๋ฆฌ  |  Hierarchical Query          ...

    blog.naver.com

    ๋Œ“๊ธ€