더북(TheBook)

③ CONNECT_BY_ISLEAF

CONNECT_BY_ISLEAF는 CONNECT BY 조건에 정의된 관계에 따라 해당 로우가 최하위 자식 로우이면 1을, 그렇지 않으면 0을 반환하는 의사 컬럼이다.

입력

    SELECT department_id, LPAD(' ' , 3 * (LEVEL-1)) || department_name, LEVEL, CONNECT_BY_ISLEAF
      FROM departments
     START WITH parent_id IS NULL
     CONNECT BY PRIOR department_id  = parent_id;
그림 7-10 CONNECT_BY_ISLEAF

계층형 쿼리는 그 구조 형태가 트리 구조다. 따라서 각 로우를 노드라고도 하는데 최상위 노드를 루트 노드, 자식 노드가 없는 최하위 노드를 리프 노드라고 한다. CONNECT_BY_ISLEAF는 바로 해당 로우가 리프 노드에 해당하는지 여부를 반환하는 것이다. [그림 7-10]을 보면 마케팅 부서는 하위 노드가 더는 없으므로 리프 노드에 속하지만, 구매/생산부에서는 총무기획부의 하위 노드이긴 하나 하위 부서가 존재하므로 리프 노드가 아니며 0을 반환했다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.