티스토리 뷰

1. START WITH ... CONNECT BY - 역할

오라클에서 지원하는 계층적인 정보를 표현할 수 있게 지원하는 특별한 문장


 ◈ 구문형식

 

  START WITH 조건1 .... CONNECT BY 조건2


  - START WITH 조건1 : 역할

 

       루트노드를 식별

       조건1을 만족하는 모든 로우들은 루트노드가 됨

       생략 시 모든 로우들을 루트노드로 간주

       조건1에 서브쿼리도 가능


  - CONNECT BY 조건2 : 역할

 

      부모와 자식노드들 간의 관계를 명시

      조건2에서는 반드시 PRIOR 연산자 포함 - 부모노드의 컬럼을 식별하는데 사용

      조건2에는 서브쿼리는 불가능  


2. START WITH ... CONNECT BY - 기본 테이블

◈ 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
SELECT LPAD(' ' ,2*(LEVEL-1)) || NAME 
            FROM  TEST_TABLE_ONE
                START WITH PP_LEVEL IS NULL
                CONNECT BY PRIOR P_LEVEL=PP_LEVEL






◈ 결과 테이블


 LPAD('',2*(LEVEL-1)) || NAME

 테스트1

   테스트2 

     테스트4 

     테스트5

   테스트3 




◈ 설명


결과를 보게 된다면 LEVEL 이라는 것은 가상의 컬럼으로 계층정보를 표현할 때 레벨을 나타냅니다


그래서 위와 같이 사용이 가능하고 루트노드가 1 그 자식노드가 2 자식 노드의 자식 노드가 3... 이런 식으로

사용 가능합니다


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