계층형 쿼리 조회방법.. 0 2 2,177

by 윤영재 [SQL Query] [2011.05.24 18:25:41]


idx subject parent_num
1 질문 null
2 답변 1
3 답변1의답변
4 답변2
5 답변3
6 답변2의 답변
7 질문2 null
8 질문3 null


위와 같이 데이터가 들어있습니다.
SELECT idx, subject FROM board START WITH parent_num IS Null CONNECT BY PRIOR idx= parent_num Order siblings BY isTop desc

만약 2번 글을 본다고 할때 관련글만(1~6번데이터만) 뽑아오는 쿼리를 어떻게 해야 할지 감이 잘 안옵니다.
기초가 부족해서 어리버리하고 있어요..ㅠ.ㅠ
by 마농 [2011.05.24 18:46:27]
WITH board AS
(
SELECT 1 idx, '질문' subject, null parent_num FROM dual
UNION ALL SELECT 2, '답변' , 1 FROM dual
UNION ALL SELECT 3, '답변1의답변', 2 FROM dual
UNION ALL SELECT 4, '답변2' , 1 FROM dual
UNION ALL SELECT 5, '답변3' , 1 FROM dual
UNION ALL SELECT 6, '답변2의답변', 4 FROM dual
UNION ALL SELECT 7, '질문2' , null FROM dual
UNION ALL SELECT 8, '질문3' , null FROM dual
)
SELECT *
FROM board
START WITH idx =
(
SELECT idx
FROM board
WHERE CONNECT_BY_ISLEAF = 1 -- 역전개 했을때 Leaf Node가 순방향에서는 Root Node 임
START WITH idx = 2 -- 검색조건
CONNECT BY idx = PRIOR parent_num -- 역방향 전개
)
CONNECT BY PRIOR idx = parent_num
;

by 윤영재 [2011.05.24 18:49:56]
마농님 감사합니다.~ CONNECT_BY_ISLEAF 강좌에서 찾아보긴 했는데 이런거였군요..아놔~ ㅠ.ㅠ
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입