독서하는 개발자's Blog

반응형

 

LEVEL 계층 구조

 

트리의 노드와 LEVEL 값을 나타낸 사진.

 

<위 그림에 대한 설명>

 

루트 행은 트리구조의 최상위 라인입니다.

자식 행은 root가 아닌 모든 행입니다.

부모 행은 자식이있는 행입니다.

leaf의 행은 자녀가 없는 임의의 행입니다. 


 

<사용방법에 대한 설명>

 

level은 가상 열이며, 트리 내에서 어떤 행(위치)에 있는지를 알수있다.   (그림 참고)

 

예를 들어 START WITH ~ CONNECT BY 같은 계층형 쿼리를 쓰지않고

 

SELECT LEVEL FROM company

위와같이 select를 했을 경우에 level 컬럼의 값은 0이라고 나온다.

당연히 계층이 존재하지 않기때문에 그럴 것이다.

 

하지만, START WITH ~ CONNECT BY 를 쓰게되면 계층은 존재하게 된다.

즉, level을 쓸 수 있다는 것

SELECT LEVEL 
     , CODE_SORT 
     , LPAD(' ', 4*(LEVEL-1)) || CODE_NM AS CODE_NM
     FROM CODE_TBL 
     START WITH PAR_CODE IS NULL CONNECT BY PRIOR CODE = PAR_CODE 
     ORDER SIBLINGS BY CODE_SORT;
             

 

위와 같은 코드를 실행하게 되면, 아래 표처럼 나타나게 된다.

LEVEL CODE_SORT CODE_NM
1 1 회원구분
2 1        비회원
2 2        회원

같은 트리 행에서 같은 level이고 부모 행에서는 최상의 level인 1인 것을 볼 수 있다.

 


참고 링크

https://docu94.tistory.com/70

 

[Oracle] 계층구조 쿼리란? (Hierarchical Queries)

계층적 쿼리 (Hierarchical Queries) START WITH ~ CONNECT BY 계층 쿼리를 사용하는 예) 회사에서 개발팀, 기획팀이 있다고 하면 개발팀에는 개발 1팀, 개발 2팀 / 기획팀에는 기획 1팀, 기획 2팀과 같이 하위..

docu94.tistory.com

https://docu94.tistory.com/69

 

[Oracle] 계층적 쿼리 SYS_CONNECT_BY_PATH

계층적 쿼리 SYS_CONNECT_BY_PATH 아래는 이 쿼리의 문법이다. SYS_CONNECT_BY_PATH(column, char) SYS_CONNECT_BY_PATH에 대한 설명을 봅시다. * SYS_CONNECT_BY_PATH는 계층적 쿼리에서만 유효하다. * CONNECT..

docu94.tistory.com

도움이 되셨으면 공감과 광고 한번 씩 눌러주시면 감사합니다!!

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band