SQL

SQL(MariaDB) - 3개 이상 테이블 조인 방법

햄스터2호 2021. 11. 30. 19:34

초급 햄스터라 Join은 항상 2개의 테이블간에 해보았는데

강의를 듣던중 3개 테이블을 Join하게 되어 기록으로 남긴다.

 

Select * From (테이블1)

Join (테이블2) on (조건)

Join (테이블3) on (조건)

 

 

예제)

햄스터 마켓과 스토어에서 판매중인 모든 상품의 리스트(상품ID, 상품이름)를 출력하되

각 가게에서 취급하지 않는 상품은 NULL로 출력되도록 하라.

----------------------------------------------------------------

HamsterMarket 테이블에는 마켓ID, 상품ID, 상품이름이 담겨있음

HamsterStore 테이블에는 스토어ID, 상품ID, 상품이름이 담겨있음

----------------------------------------------------------------

 

HamsterMarket 테이블구조 및 입력데이터

HamsterStore 테이블구조 및 입력데이터

 

1. 출력 정보

 - 모든 상품ID, 상품이름(햄스터 마켓과 햄스터 스토어 각각 판매중인 상품 전체 리스트 취합) 

 - 햄스터 마켓의 마켓ID(햄스터 마켓에서 취급하지 않는 상품은 마켓ID를 NULL로 출력)

 - 햄스터 스토어의 스토어ID(햄스터 마켓에서 취급하지 않는 상품은 스토어ID를 NULL로 출력)

 

2. 출력 예시

 

3. 쿼리

select pro_list.product_id, pro_list.product_name, market_id, store_id from(
(select product_id, product_name from test.hamstermarket
union
select product_id, product_name from test.hamsterstore) as pro_list)
left join test.hamstermarket
on test.hamstermarket.product_id = pro_list.product_id
left join test.hamsterstore
on test.hamsterstore.product_id = pro_list.product_id
order by pro_list.product_id;