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 ;