계층형 쿼리


  - 계층형쿼리는 계층형구조(상하 수직관계)로 쿼리의 결과를 반환하는 쿼리

 (사용형식)
   SELECT 컬럼list
     FROM 테이블명[별칭][,...]
    WHERE 조건
    START WITH 최상위 조건
    CONNECT BY [NOCYCLE] PRIOR 계층형 구조 조건
  • 'START WITH 최상위 조건' : 계층형 구조에서 최상위 행을 식별하기 위한 조건
    이 조건에 맞는 행부터 시작하여 계층형 구조를 풀어 나감
  • 'CONNECT BY [NOCYCLE] PRIOR 계층형 구조 조건' : 계층형 구조가 어떤식으로 연결되었는지 기술
     ex)부서테이블에서 PARENT_ID는 상위부서 정보를 갖고있는 컬럼이며, 이것을 이용하여
          계층형 구조를 표현하려면 'CONNECT BY PRIOR DEPARTMENT_ID=PARENT_ID'로 기술해야 함
  • 'PRIOR'는 계층형 쿼리에만 사용하는 연산자로 '이전','직전의'라는 뜻으로 위치는
     = 연산자 앞 또는 뒤에 위치할 수 있음(CONNECT BY PARENT_ID=PRIOR DEPARTMENT_ID)

    ** LEVEL : 계층형 쿼리에서만 사용할 수 있는 의사컬럼(Pseudo Column)으로 계층의 값을 의미
                       보통 들여쓰기를 위한 값으로 많이 사용

사용예)부서테이블에서 부서번호,부서명,LEVEL을 조회하되 부서명을 계층구조로 조회하시오             
  SELECT DEPARTMENT_ID AS 부서번호,
         LPAD(' ',3*(LEVEL-1))||DEPARTMENT_NAME AS 부서명,
         LEVEL AS 레벨
    FROM DEPARTMENTS
   START WITH PARENT_ID IS NULL
 CONNECT BY PRIOR DEPARTMENT_ID=PARENT_ID

'ORACLE 복습 & 정리' 카테고리의 다른 글

[ORACLE] INDEX 221130-03  (0) 2022.11.30
[ORACLE] SEQUENCE,동의어 221130-02  (0) 2022.11.30
[ORACLE] VIEW 221130-01  (0) 2022.11.30
[ORACLE] 집합연산자 221129-02  (0) 2022.11.29
[ORACLE] DML명령과 서브쿼리 221129-01  (0) 2022.11.29

+ Recent posts