계층형 구조란?
- 루트 데이터 : 위에서 아래로 내려가는 하향식 방식을 기준으로 맨 상위에 있는 데이터
- 리프 데이터 : 맨 아래에 있는 데이터
START WITH
, CONNECT BY
, ORDER SIBLINGS BY
START WITH
CONNECT BY [NOCYCLE] [PRIOR] A AND B
ORDER SIBLINGS BY
기타
가상 칼럼
LEVEL
- 루트 데이터면 1 (1부터 시작)
- 하위 데이터가 있을 때마다 1씩 증가
CONNECT_BY_ISLEAF
- 전개 과정에서 해당 데이터가 리프 데이터면 1, 그렇지 않으면 0
CONNECT_BY_ISCYCLE
- 전개 과정에서 자식을 갖는데 해당 데이터가 조상으로서 존재하면 1, 그렇지 않으면 1
LPAD
LPAD
함수는 지정한 길이 만큼 왼쪽부터 특정문자로 채워준다.
SELECT ···
, LEVEL 앨리어스 명
, LPAD(' ', 공백 수[정수]*(LEVEL-1)) || 칼럼명 [칼럼명 다음 출력하고자하는 결과물] AS "출력하고자 하는 앨리어스 명"
, CONNECT_BY_ISLEAF AS 앨리어스 명
, CONNECT_BY_ISCYCLE AS
- 위의 코드는 계층 레벨에 따라 왼쪽에 공백이 붙도록 함
CONNECT_BY_ROOT
- 현재 행의 최상위 노드(```SELECT```문 집합 내에서) 를 구한다.
SYS_CONNECT_BY_PATH
SELECT ···
, CONNECT_BY_ROOT 칼럼명 [AS "출력하고자 하는 앨리어스 명"]
, SYS_CONNECT_BY_PATH(칼럼명 [칼럼명 다음 출력하고자하는 결과물], '구분자') AS 출력하고자 하는 앨리어스 명
댓글남기기