티스토리 뷰
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에 루트 노드가 표시됩니다
'[개발]프로그래밍 > sql' 카테고리의 다른 글
[oracle] CONNECT_BY_ISLEAF - 자식 노드 찾기 (1) | 2016.10.26 |
---|---|
[oracle] CONNECT_BY_ISCYCLE - 중복 참조 찾기 (0) | 2016.10.25 |
[oracle] START WITH ... CONNECT BY - 계층형 쿼리 (1) | 2016.10.25 |
[oracle] MINUS - 특정 테이블 속한 데이터 표시(차집합) (0) | 2016.10.12 |
[oracle] INTERSECT - 공통된 데이터를 표시(교집합) (0) | 2016.10.12 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday