IT/DBMS

[Oracle]ORACLE 계층형 쿼리

알 수 없는 사용자 2022. 11. 29. 06:59
반응형

목차

    테이블에 계층형 데이터가 존재할 경우 사용(조직, 사원, 메뉴등의 순환관계 등에 사용됨)

    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

    반응형

    'IT > DBMS' 카테고리의 다른 글

    [Oracle] 달력 만들기  (0) 2023.04.01
    [SQL] update에서 case when절 사용  (0) 2023.03.04
    [Oracle]ORACLE 12C SQL에 추가된 새로운 기능  (0) 2022.11.29
    [MySQL/MariaDB] Update join...  (0) 2022.11.29
    [Oracle] Oracle 시퀀스 생성 쿼리  (0) 2022.11.29