티스토리 뷰

1. CONNECT_BY_ROOT - 역할

계층형 쿼리에서 최상위 노드를 찾고자 할 경우


2. CONNECT_BY_ROOT - 기본 테이블

◈ TEST_TABLE_ONE


 IDX

NAME

ID

 P_LEVEL PP_LEVEL

 1

테스트1

test1

 1

 

 2

테스트2

test2

 2

 1

 3

테스트3

test3

 3

 1

 4

테스트4

test4

 4

 2

 5

테스트5

test5

 5

 2


3. START WITH ... CONNECT BY - SQL 문장

◈ SQL

1
2
3
4
5
6
7
SELECT LEVEL
            ,LPAD(' ' ,2*(LEVEL-1)) || NAME AS NAME
            ,CONNECT_BY_ROOT NAME AS ROOT_NAME 
            FROM  TEST_TABLE_ONE
            WHERE LEVEL>=2
                START WITH PP_LEVEL IS NULL
                CONNECT BY PRIOR P_LEVEL=PP_LEVEL           






◈ 결과 테이블


 LEVEL

NAME

ROOT_NAME 

 2

테스트2

테스트1 

 3

   테스트4 

테스트1 

 3

   테스트5

테스트1 

 2

테스트3

테스트1 




◈ 설명


현재 WHERE 조건에서 LEVEL이 2이상으로 나타나게 하기 때문에 테스트1은 LEVEL이 1어서 빠지게 되어 있습니다


이러한 조건에서 루트 노드를 찾고자 CONNECT_BY_ROOT 라는 함수가 지원이 되고 , 위의 결과처럼 ROOT_NAME에 루트 노드가 표시됩니다




댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday