본문 바로가기
SQL/오라클(Oracle)

오라클, start with connect by prior. 계층구조로 정렬하기.

by SSaMKJ 2013. 3. 25.

1. 테이블 데이터

    id=시퀀스, parent_id=부모키, name=자신의 이름, parent_name=부모의 이름, depth=단계
IDPARENT_IDNAMEPARENT_NAMEDEPTH
30root1null1
40root2null1
53root1-1root12
63root1-2root12
73root1-3root12
83root1-4root12
98root1-4-1root1-43
104root2-1root22
114root2-2root22
2. 계층형 쿼리

 SELECT ID, PARENT_ID, NAME, PARENT_NAME, TYPE

 FROM SITE_LIST

 START WITH PARENT_ID = 0   /* 부모의 시작 조건 */

 CONNECT BY PRIOR  ID = PARENT_ID /* 자신의 키와 부모키를 비교 */

 ORDER SIBLINGS BY PARENT_ID ASC, ID ASC; /* 정렬 (일반적인 ORDER BY 가 아닌 계층내에서 정렬 할 수 있는 ORDER SIBLINGS BY) */


3. 계층형 쿼리 후 정렬 결과
IDPARENT_IDNAMEPARENT_NAMEDEPTH
30root1null1
53root1-1root12
63root1-2root12
73root1-3root12
83root1-4root12
98root1-4-1root1-43
40root2null1
104root2-1root22
114root2-2root22

'SQL > 오라클(Oracle)' 카테고리의 다른 글

오라믈 EXCEPTION 처리.  (2) 2013.04.02
오라클(Oracle) 테이블 존재 여부 확인하기  (116) 2013.03.27
RANK() 함수  (2) 2013.03.25
오라클 업데이트  (2) 2013.03.25
오라클 전화번호에서 '-', space, '.' 제거하기  (12) 2013.03.25

댓글