데이터베이스

[mysql/mariadb] 계층쿼리 RECURSIVE로 구현

엉으니 2019. 5. 27. 19:05

앞서 계층쿼리를 함수로 만들어놓고 호출하는 방법 말고도 쿼리 자체를 재귀로 만들수 있다.

WITH RECURSIVE MENU_MGR AS  // MENU_MGR 이름을 가진 함수이다.
(
SELECT  
MENU_CD menuCd  //코드 정보
, PARN_CD parnCode  //부모 코드
, MENU_NM menuNm  //코드이름
,ORDER_SEQC orderSeq //정렬번호 (int형)
, 1 lvl // 레벨
FROM YE_MENU_MGR AS MMGR
WHERE MENU_CD = 'ROOT' // ROOT부터 시작해서 자식들이 나오게 한다.
UNION ALL
SELECT
MMGR.MENU_CD menuCd
, MMGR.PARN_CD parnCode
, MMGR.MENU_NM menuNm
,ORDER_SEQC orderSeq
, lvl + 1 lvl //재귀가 돌면서 레벨이 올라가게 되어있다.
FROM YE_MENU_MGR AS MMGR
INNER JOIN MENU_MGR MM // MENU_MGR 함수를 조인한다.
ON MMGR.PARN_CD = MM.menuCd
)
SELECT * FROM MENU_MGR ;

 

+ 함수를 만들어 호출하는 방법과 자체 함수를 만드는 방법 두가지 모두 오라클처럼

순차 계층쿼리로 만들수는 없는 것 같다.

+ 만약 순차 계층쿼리로 만들어야한다면 따로다로 조회해서 UNION하는 방법밖에 없을 듯 싶다.

반응형

'데이터베이스' 카테고리의 다른 글

[mysql/mariadb] 계층쿼리 함수생성 및 호출로 구현  (0) 2019.05.23
[ORACLE] 시노님(SYNONYM)  (0) 2017.09.29
[mysql] loop로 더미데이터 삽입  (1) 2016.03.03
[mysql] VIEW  (0) 2016.02.18
[mysql] UNION  (0) 2016.02.18