본문 바로가기
Dev/Postgresql

Postgresql 계층형쿼리 Sample

by 펭귄안에 온천 2022. 3. 29.
728x90
반응형
 WITH RECURSIVE dept_record(idx, parent, name, help, level, path, cycle) AS (
    SELECT
           d.idx,
           d.parent,
           d.name,
           d.help,
           0,
           ARRAY [d.idx],
           false
    FROM t_menu d
    WHERE d.parent IS NULL
    UNION ALL
    SELECT
           d.idx,
           d.parent,
           d.name,
           d.help,
           level + 1,
           path || d.idx,
           d.idx = ANY (path)
    FROM t_menu d,
         dept_record dr
    WHERE d.parent = dr.idx
      AND NOT CYCLE
    )
SELECT idx, parent, name, help, level, path
FROM dept_record
ORDER BY path;
반응형