( START WITH, CONNECT BY, ORDER SIBLINGS BY)
- 상위 타입과 하위 타입간의 관계를 계층식으로 표현할 수 있게하는 질의어(SELECT)
START WITH
상위 타입(최상위 부모)으로 사용될 행을 지정
CONNECT BY
-> 상위 타입과 하위 타입 사이의 관계를 규정
-> PRIOR(이전의) 연산자와 같이 사용하여 현재 행 이전에 상위 타입 또는 하위 타입이 있을지 규정ORDER SIBLINGS BY
계층 구조 정렬
1) 부모 -> 자식 계층구조
CONNECT BY PRIOR 자식 컬럼 = 부모 컬럼
2) 자식 -> 부모 계층구조
CONNECT BY PRIOR 부모 컬럼 = 자식 컬럼
계층형 쿼리가 적용된 SELECT 해석 순서
6 : SELECT
1 : FROM (+JOIN)
4 : WHERE
2 : START WITH
3 : CONNECT BY
5 : ORDER SIBLINGS BY
<!-- 댓글 목록 조회(계층형 구조) -->
<select id="selectReplyList" resultMap="reply_rm">
SELECT LEVEL, R.* FROM
(SELECT REPLY_NO, REPLY_CONTENT,
TO_CHAR(CREATE_DT, 'YYYY"년" MM"월" DD"일" HH24"시" MI"분" SS"초"') CREATE_DT,
BOARD_NO, MEMBER_NO, MEMBER_NICK, PROFILE_IMG, PARENT_REPLY_NO, REPLY_ST
FROM REPLY_S
JOIN MEMBER_S USING(MEMBER_NO)
WHERE BOARD_NO = #{boardNo}) R
WHERE REPLY_ST = 'N'
START WITH PARENT_REPLY_NO IS NULL
CONNECT BY PRIOR REPLY_NO = PARENT_REPLY_NO
ORDER SIBLINGS BY REPLY_NO
</select>