reg.tbl | ||||||
mb_no | mb_name | mb_level | mb_recommend | mb_point | ||
1 | AAA01 | 3 | 200 | |||
2 | AAA02 | 3 | AAA01 | 190 | ||
3 | AAA03 | 2 | AAA01 | 180 | ||
4 | AAA04 | 2 | AAA02 | 170 | ||
5 | AAA05 | 1 | AAA03 | 160 | ||
6 | AAA06 | 1 | AAA04 | 150 | ||
7 | AAA07 | 1 | AAA05 | 140 | ||
8 | AAA08 | 1 | AAA02 | 130 | ||
9 | AAA09 | 2 | AAA02 | 120 | ||
[reg.php 화면 출력] | ||||||
나 | 1단계 | 2단계 | 3단계 | 포인트 | ||
AAA01 | 200 | |||||
ㄴ | AAA02 | 190 | ||||
ㄴ | AAA04 | 170 | ||||
ㄴ | AAA06 | 150 | ||||
ㄴ | AAA08 | 130 | ||||
ㄴ | AAA09 | 120 | ||||
ㄴ | AAA03 | 180 | ||||
ㄴ | AAA05 | 160 | ||||
ㄴ | AAA07 | 140 | ||||
추천인을 출력하는 페이지 인데요..
보통 그전에는...for 문을 돌리고 돌려서 '나' 를 기준으로 순서대로(가로형) 출력해서 보여줬는데요...
위처럼 세로타입(?) 으로 표현하려고 하니...구문을 어떻게 짜야 할지 난해 해서요.
워낙 실력이 부족해서...끙끙거리고 있습니다. 도움 주실분 계신가요..ㅜㅜ
WITH RECURSIVE t1 AS ( SELECT mb_no, mb_name, mb_level, mb_recommend, mb_point , 0 lv , CAST(mb_name AS VARCHAR(200)) AS mb_name_list FROM t WHERE mb_recommend IS NULL UNION ALL SELECT c.mb_no, c.mb_name, c.mb_level, c.mb_recommend, c.mb_point , p.lv + 1 lv , CONCAT(p.mb_name_list, '-', c.mb_name) AS mb_name_list FROM t1 p INNER JOIN t c ON p.mb_name = c.mb_recommend ) SELECT CASE lv WHEN 0 THEN mb_name WHEN 1 THEN 'ㄴ' END lv0 , CASE lv WHEN 1 THEN mb_name WHEN 2 THEN 'ㄴ' END lv1 , CASE lv WHEN 2 THEN mb_name WHEN 3 THEN 'ㄴ' END lv2 , CASE lv WHEN 3 THEN mb_name WHEN 4 THEN 'ㄴ' END lv3 , mb_point FROM t1 ORDER BY mb_name_list ;