첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

■ CTE 재귀 호출을 사용하는 방법을 보여준다.

 

▶ 예제 코드 (SQL)

CREATE TABLE MENU
(
    ID        INT
   ,PARENT_ID INT
   ,NAME      VARCHAR(50)
);

INSERT INTO MENU VALUES (1, 0, '메뉴');
INSERT INTO MENU VALUES (2, 0, '메뉴');
INSERT INTO MENU VALUES (3, 1, '메뉴');
INSERT INTO MENU VALUES (4, 1, '메뉴');
INSERT INTO MENU VALUES (5, 1, '메뉴');
INSERT INTO MENU VALUES (6, 5, '메뉴');
INSERT INTO MENU VALUES (7, 2, '메뉴');
INSERT INTO MENU VALUES (8, 2, '메뉴');

WITH CTE(ID, PARENT_ID, NAME, DISPLAY_ORDER, TREE_PATH)
AS
(
    SELECT
        ID
       ,PARENT_ID
       ,NAME
       ,CONVERT(VARCHAR(4000), ID  ) AS DISPLAY_ORDER
       ,CONVERT(VARCHAR(4000), NAME) AS TREE_PATH
    FROM MENU
    WHERE PARENT_ID = 0
    UNION ALL
    SELECT
        A.ID
       ,A.PARENT_ID
       ,A.NAME
       ,CONVERT(VARCHAR(4000), B.DISPLAY_ORDER + ' > ' + CONVERT(VARCHAR(4000), A.ID)) AS DISPLAY_ORDER
       ,CONVERT(VARCHAR(4000), B.TREE_PATH     + ' > ' + A.NAME                      ) AS TREE_PATH
    FROM  MENU AS A, CTE AS B
    WHERE A.PARENT_ID = B.ID
)
SELECT
    NAME
   ,TREE_PATH
FROM CTE
ORDER BY DISPLAY_ORDER;
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요