앞서 계층쿼리를 함수로 만들어놓고 호출하는 방법 말고도 쿼리 자체를 재귀로 만들수 있다.
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 |