mysql 결과를 트리구조로 만들고 싶습니다. 0 5 968

by 경상도곰남 [MySQL] [2019.02.01 10:31:19]


부모와 자식 테이블이 있는데 2개의 테이블의 결과를 트리구조로 보여주고 싶습니다.

고수님들의 조언 부탁드립니다.

 

부모테이블
id    name        sort
33    서울        2
34    부산        3
37    대구        1
38    대전        5


자식테이블
p_id    name        sort
37    서구           2
38    대덕구        3
38    유성구        4
33    강남구        1
37    동구          1

 

 

결과
id    name
37    대구
37    동구
37    서구
33    서울
33    강남구
34    부산
38    대전
38    대덕구        
38    유성구    

by 우리집아찌 [2019.02.01 10:39:31]

WITH PARENT ( ID , NAME , SORT)  AS (
SELECT '33' ,'서울' , 2 UNION ALL
SELECT '34' ,'부산' , 3 UNION ALL
SELECT '37' ,'대구' , 1 UNION ALL
SELECT '38' ,'대전' , 5 
) , CHILD ( P_ID , NAME , SORT ) AS (
SELECT '37' ,'서구' , 2 UNION ALL
SELECT '38' ,'대덕구' , 3 UNION ALL
SELECT '38' ,'유성구' , 1 UNION ALL
SELECT '33' ,'강남구' , 5 UNION ALL
SELECT '37' ,'동구' , 5 
)

SELECT ID , NAME , SORT
  FROM (SELECT ID , NAME , SORT , 1 M_SORT FROM PARENT
         UNION ALL
        SELECT P_ID , NAME , SORT, 2 M_SORT FROM CHILD
       ) A
 ORDER BY ID DESC , M_SORT , SORT
 

 


by 경상도곰남 [2019.02.01 10:47:33]

답변 주셔서 감사합니다.

그런데 결과 데이터에서  대구가 첫번째로 나와야 하거든요 

결과대로 나오질 안네요 


by 우리집아찌 [2019.02.01 13:24:00]

앗.. 그러네요..

짐 퇴근해야해서~~ 

마농님거 참고해주세요.

MYSQL은 지원되는지 모르겠는데 recursive 로 해도 될것같아요.


by 마농 [2019.02.01 11:06:00]
WITH parent AS
(
SELECT 33 id, '서울' name, 2 sort
UNION ALL SELECT 34, '부산', 3
UNION ALL SELECT 37, '대구', 1
UNION ALL SELECT 38, '대전', 5
)
, child AS
(
SELECT 37 p_id, '서구' name, 2 sort
UNION ALL SELECT 38, '대덕구', 3
UNION ALL SELECT 38, '유성구', 4
UNION ALL SELECT 33, '강남구', 1
UNION ALL SELECT 37, '동구'  , 1
)
SELECT id
     , name
     , sort s1
     , 0    s2
  FROM parent
 UNION ALL
SELECT p.id
     , c.name
     , p.sort s1
     , c.sort s2
  FROM parent p
     , child c
 WHERE p.id = c.p_id
 ORDER BY s1, s2
;

 


by 경상도곰남 [2019.02.01 13:29:38]

정말 감사합니다. ^^

많은 도움이 되었습니다.

복 많이 받으세요 ^^

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입