03.업/11.디비

계층형쿼리

봄날의차 2020. 10. 19. 14:48

WITH RECURSIVE TMP_TABLE AS

(

    SELECT

       SQ,

       GROUP_NAME,

       PARENT_SQ,

       CAST(GROUP_NAME AS CHAR(200)) PATH,

       END_YN,

       ENABLE_YN,

       UNIT_ID,

       1 AS LVL

    FROM T_TICKET_GROUP WHERE PARENT_SQ = 0

    UNION ALL

    SELECT

       TG.SQ,

       TG.GROUP_NAME,

       TG.PARENT_SQ,

       CONCAT(TMP.PATH,'->',TG.GROUP_NAME) AS PATH,

       TG.END_YN,

       TG.ENABLE_YN,

       TG.UNIT_ID,

       TMP.LVL+1 AS LVL

    FROM TMP_TABLE TMP JOIN T_TICKET_GROUP TG ON (TMP.SQ = TG.PARENT_SQ AND TMP.UNIT_ID = TG.UNIT_ID)

    AND TG.UNIT_ID = 1

    AND TG.ENABLE_YN = 'Y'   

)

SELECT SQ, GROUP_NAME, PARENT_SQ, PATH, END_YN, ENABLE_YN, UNIT_ID, LVL

FROM TMP_TABLE

ORDER BY PATH

;

 

WITH RECURSIVE TMP_TABLE AS

(

    SELECT

       SQ,

       GROUP_NAME,

       PARENT_SQ,

       CAST(GROUP_NAME AS CHAR(200)) PATH,

       END_YN,

       ENABLE_YN,

       UNIT_ID,

       GOODS_TYPE,

       1 AS LVL

    FROM T_GOODS_GROUP WHERE PARENT_SQ = 0

    UNION ALL

    SELECT

       TG.SQ,

       TG.GROUP_NAME,

       TG.PARENT_SQ,

       CONCAT(TMP.PATH,'->',TG.GROUP_NAME) AS PATH,

       TG.END_YN,

       TG.ENABLE_YN,

       TG.UNIT_ID,

       TG.GOODS_TYPE,

       TMP.LVL+1 AS LVL

    FROM TMP_TABLE TMP JOIN T_GOODS_GROUP TG ON (TMP.SQ = TG.PARENT_SQ AND TMP.UNIT_ID = TG.UNIT_ID)

    AND TG.UNIT_ID = 1

    AND TG.ENABLE_YN = 'Y'   

)

SELECT SQ, GROUP_NAME, PARENT_SQ, PATH, END_YN, ENABLE_YN, UNIT_ID, GOODS_TYPE,LVL

FROM TMP_TABLE

ORDER BY PATH

;

 

WHERE TICKET_TYPE <![CDATA[<>]]> 3