| fruit_id | fruit_name | parent_fruit_id |
| FRUIT_1000 | 자두 | |
| FRUIT_1100 | 키위 | FRUIT_1000 |
| FRUIT_1101 | 포도 | FRUIT_1100 |
| FRUIT_1103 | 사과 | FRUIT_1100 |
| FRUIT_2000 | 배 | |
| FRUIT_2100 | 딸기 | FRUIT_2000 |
| FRUIT_2101 | 수박 | FRUIT_2100 |
SQL 초보자입니다,, 위의 테이블을 mysql 쿼리를 이용해서, 아래처럼 만들어보려고 하고 있는데요,,
parent_fruit_id를 위의 데이터의 fruit_id와 같은 fruit_name을 표시하면서, 맨 위(?)의 fruit_id의 parent_fruit_id로 표시하고 싶은데, 어떻게 해야할지 잘 모르겠습니다..
| fruit_id | fruit_name | parent_fruit_id |
| FRUIT_1000 | 자두 | 자두 |
| FRUIT_1100 | 키위 | 자두 |
| FRUIT_1101 | 포도 | 자두 |
| FRUIT_1103 | 사과 | 자두 |
| FRUIT_2000 | 배 | 배 |
| FRUIT_2100 | 딸기 | 배 |
| FRUIT_2101 | 수박 | 배 |
WITH RECURSIVE tmp AS
(
WITH fruit AS
(
SELECT 'FRUIT_1000' fruit_id, '자두' fruit_name, NULL parent_fruit_id
UNION ALL SELECT 'FRUIT_1100', '키위', 'FRUIT_1000'
UNION ALL SELECT 'FRUIT_1101', '포도', 'FRUIT_1100'
UNION ALL SELECT 'FRUIT_1103', '사과', 'FRUIT_1100'
UNION ALL SELECT 'FRUIT_2000', '배' , NULL
UNION ALL SELECT 'FRUIT_2100', '딸기', 'FRUIT_2000'
UNION ALL SELECT 'FRUIT_2101', '수박', 'FRUIT_2100'
)
SELECT fruit_id, fruit_name, parent_fruit_id
, fruit_name root_name
FROM fruit
WHERE parent_fruit_id IS NULL
UNION ALL
SELECT c.fruit_id, c.fruit_name, c.parent_fruit_id
, p.root_name
FROM tmp p
INNER JOIN fruit c
ON p.fruit_id = c.parent_fruit_id
)
SELECT *
FROM tmp
;