DB/ORACLE

ORACLE) CONNECT BY 함수 : 계층데이터 사용하기

code_learner 2022. 10. 1. 06:30

 

오라클에서는 CONNECT BY를 지원해 계층 데이터를 사용할 수 있다.

 

MENU테이블

 

[활용]

SELECT LEVEL, MENU_SEQ, UP_MENU_SEQ, MENU_NM, RUN_YN
FROM MENU
START WITH MENU_NM = '분식'
CONNECT BY PRIOR MENU_SEQ = UP_MENU_SEQ;

-START WITH -> 시작행을 지정해 주는 조건(필수X)

-CONNECT BY -> 최초행 이후 다음행이 오는 조건 

  이전행의 MENU_SEQ값과 현재행의 UP_MENU_SEQ가 같다면 출력해준다. 

-LEVEL 칼럼으로 해당 ROW의 DEPTH를 확인할 수 있다. 

 


 

SELECT LEVEL, MENU_SEQ, UP_MENU_SEQ, MENU_NM, RUN_YN
FROM MENU
START WITH MENU_NM = '분식'
CONNECT BY PRIOR MENU_SEQ = up_menu_seq AND LEVEL < 3;

-LEVEL을 통해 CONNECT BY의 조건을 줄 수 있다.

 


 

SELECT LEVEL, MENU_SEQ, UP_MENU_SEQ, MENU_NM, RUN_YN
FROM MENU
WHERE RUN_YN = 'Y'
START WITH MENU_NM = '분식'
CONNECT BY PRIOR MENU_SEQ = UP_MENU_SEQ;

-WHERE 절은 데이터를 호출한 뒤 마지막으로 조건을 걸어 데이터를 정리한다.

 

 


 

SELECT LEVEL, MENU_SEQ, UP_MENU_SEQ, MENU_NM, RUN_YN
FROM MENU
WHERE RUN_YN = 'Y'
START WITH MENU_NM = '분식'
CONNECT BY PRIOR MENU_SEQ = UP_MENU_SEQ
ORDER SIBLINGS BY MENU_SEQ DESC;

-ORDER SIBLINGS BY : 계층 구조 내의 정렬순서이다.

 -> LEVEL2 끼리 MENU_SEQ를 비교하고, LEVEL2의 자식인 LEVEL3내에서 MENU_SEQ를 비교한다.

 

 

 

https://mozi.tistory.com/155

 

[ORACLE] CONNECT BY 함수 사용하기

ORACLE 에서는 계층데이터를 위해 CONNECT BY 절을 지원합니다. CONNECT BY 구성 CONNECT BY 는 아래의 3개의 구문으로 구성됩니다.  구문  설명  WHERE  데이터를 가져온 뒤 마지막으로 조건절에 맞게 정리

mozi.tistory.com