계층형 구조
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
;