--이전중입니다--/이전완료
mysql에서 계층형 구조를 재귀식으로 출력
heestory
2019. 9. 10. 23:00
계층형 구조
idx | NAME | parent |
---|---|---|
1 | 식품 | 0 |
2 | 의류 | 0 |
4 | 육류 | 1 |
5 | 가공육류 | 4 |
6 | 유제품 | 1 |
7 | 냉동육류 | 4 |
8 | 아이스크림 | 6 |
9 | 우유 | 6 |
10 | 간편식품 | 1 |
11 | 해물 | 1 |
12 | 여성의류 | 2 |
13 | 양념육 | 4 |
14 | 요거트 | 6 |
15 | 남성의류 | 2 |
16 | 젓갈 | 11 |
17 | 라면 | 10 |
18 | 아동의류 | 2 |
19 | 어류 | 11 |
재귀식 출력
WITH RECURSIVE re_category AS (
SELECT idx, NAME, parent
FROM test.category
WHERE parent = 0
UNION ALL
SELECT sub_category.idx, sub_category.name, sub_category.parent
FROM test.category sub_category
INNER JOIN re_category par_category ON sub_category.parent = par_category.idx
)
SELECT idx, NAME, parent FROM re_category
ORDER BY parent, idx
;
카테고리를 나열하고 싶을 때는 출력내역에서 concat을 해 주면 보기 편하다.
WITH RECURSIVE re_category AS (
SELECT idx, NAME, parent
FROM test.category
WHERE parent = 0
UNION ALL
SELECT sub_category.idx, CONCAT(par_category.name,' > ',sub_category.name), sub_category.parent
FROM test.category sub_category
INNER JOIN re_category par_category ON sub_category.parent = par_category.idx
)
SELECT idx, NAME, parent FROM re_category
ORDER BY NAME
;