상품과 패키지상품 조인 질문입니다. 0 2 110

by 신짱 [MySQL] [2020.07.30 15:17:49]


아래와 같이 일대다 관계인 상품, 패키지 테이블이 있습니다.

<상품 테이블>

상품ID 상품명 상품가격
1 상품A 10000
2 상품B 5000
3 패키지상품A 13000

 

<패키지 테이블>

상품ID 상품참조ID 개수 할인가
3 1 1 1000
3 2 1 1000

 

상품-패키지 테이블을 left join을 할경우 아래와 같은 결과물이 나옵니다.

select * from 상품 a left join 패키지 b using(상품ID);

 

<상품-패키지 left join 결과>

상품ID 상품명 가격 상품참조ID 패키지개수 할인가
1 상품A 10000 null null null
2 상품B 5000 null null null
3 패키지상품A 13000 1 1 1000
3 패키지상품A 13000 2 1 1000

 

결과물에서 상품참조ID 부분이 아래와 같이 상품 테이블의 정보로 변환이 됐으면 합니다.

 

<원하는 결과물>

상품ID 상품명 가격 참조상품명 참조상품가격 패키지개수 할인가
1 상품A 10000 null null null null
2 상품B 5000 null null null null
3 패키지상품A 13000 상품A 10000 1 1000
3 패키지상품A 13000 상품B 5000 1 1000

 

한번의 쿼리로 위와 같은 결과물을 뽑아내고 싶은데..

상품-패키지 left join된 결과에서 다시한번 상품테이블을 조인을 해야 될거 같긴한데

잘되지를 않네요 흠..

조언부탁드립니다.

감사합니다.

by 마농 [2020.07.30 15:53:24]
WITH 상품 AS
(
SELECT 1 상품ID, '상품A' 상품명, 10000 상품가격
UNION ALL SELECT 2, '상품B', 5000
UNION ALL SELECT 3, '패키지상품A', 13000
)
, 패키지 AS
(
SELECT 3 상품ID, 1 상품참조ID, 1 개수, 1000 할인가
UNION ALL SELECT 3, 2, 1, 1000
)
SELECT a.상품ID
     , a.상품명
     , a.상품가격
     , b.상품참조ID
     , c.상품명   참조상품명
     , c.상품가격 참조상품가격
     , b.개수     패키지개수
     , b.할인가
  FROM 상품 a
  LEFT OUTER JOIN 패키지 b
    ON a.상품ID = b.상품ID
  LEFT OUTER JOIN 상품 c
    ON b.상품참조ID = c.상품ID
 ORDER BY a.상품ID, b.상품참조ID
;

 


by 신짱 [2020.07.30 17:07:36]

매번 감사드립니다. (__)

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