[SQLD/P] 계층형 쿼리 세부구조

Hyo Kyun Lee·2022년 12월 5일
0

SQLD/P

목록 보기
60/82

1. condition

SELECT C3
FROM TABLE
START WITH C2 IS NULL
CONNECT BY PRIOR C1 = C2
ORDER BY SIBLINGS BY C3 DESC

위와 같은 TABLE과 SQL이 있을때, 결과를 정렬하는 과정을 세부적으로 확인해본다.

2. 계층구조가 만들어지는 과정

  • C2가 NULL인 지점을 최상위 노드로 지정한다.

  • PRIOR C1 = C2, 즉 이전 계층에서의 C1값이 현재 계층의 C2인 값을 지정한다.
  • 이때 계층구조가 나뉘고, C1은 현재 자식에게 해당하는 값(자식값)이고 C2는 그 자식을 연결해주는 상위계층의 값(부모값)이다.

  • 반복은 하위계층이 없을때까지 반복한다.

  • 최종 결과에서 SIBLINGS 정렬을 하면, 같은 계층의 값끼리 모아 정렬할 수 있다(DESC이므로 내림차순 정렬).

3. 유의사항

  • PRIOR 자식 = 부모

그 이전 계층의 값(PRIOR)이 자식값에 해당하고, 그 자식값의 상위계층을 부모값으로 설정하였다.

부모 -> 자식으로 이루어지는 순방향 전개이다.

  • PRIOR 부모 = 자식

그 이전 계층의 값(PRIOR)이 부모값에 해당하고, 그 부모값의 하위계층을 자식값으로 설정하였다.

자식 -> 부모로 이루어지는 역방향 전개이다.

※ 이 부분은 SQLD/P 책이 잘못되어 있으므로 헷갈리지 않도록 주의한다.

4. 참고자료

관련 자료 - https://www.google.com/search?q=prior+%EC%9E%90%EC%8B%9D+%3D+%EB%B6%80%EB%AA%A8&sxsrf=ALiCzsZk7IJdWbSMIdYkukLibxvEgIX5eQ%3A1670281635672&source=hp&ei=o3mOY7buJcuJmAWxl7mwBg&iflsig=AJiK0e8AAAAAY46Hs21_jSuWLHrXc5hErckIYg_9QHjb&oq=&gs_lcp=Cgdnd3Mtd2l6EAEYBTIHCCMQ6gIQJzIHCCMQ6gIQJzIHCCMQ6gIQJzIHCCMQ6gIQJzIHCCMQ6gIQJzIHCCMQ6gIQJzIHCCMQ6gIQJzIHCCMQ6gIQJzIHCCMQ6gIQJzIHCCMQ6gIQJ1AAWABgxxtoAXAAeACAAQCIAQCSAQCYAQCwAQo&sclient=gws-wiz

0개의 댓글