1. JOIN 에서 중복된 행


서비스를 구성할 때에는 여러 테이블을 JOIN 해야하는 경우가 생깁니다. 예를 들어, 하나의 상품에 여러 이미지가 있고 여러 요금(배송비, 포장비 등)이 있는 경우가 있습니다. 여기서 이미지와 요금은 서로한테는 관련이 없지만 product의 전체적인 정보를 이루는데에는 중요한 데이터이기 때문에 동시에 들고와야할 일이 많습니다.

이 데이터들을 테이블로 표현해보자면

상품의 데이터를 저장하는 products 테이블,

상품의 이미지를 저장하는 product_images 테이블,

상품에 어떤 요금이 부과되는지를 저장하는 product_charges 테이블,

요금의 데이터를 저장하는 charges 테이블과 같은 형태로 존재할 것입니다.

1-1. 여러 테이블 JOIN

우선, 다음과 같이 4개의 테이블이 있다고 가정하겠습니다.

products

id(int) title(varchar) description(varchar) price(decimal)
1 제품1 제품1을 써보세요. 1000
2 제품2 제품2는 좋습니다. 2000
3 제품3 제품3은 뛰어납니다. 1500

product_images

id(int) product_id(int) url(varchar)

| 2 | 1 | ~/product1-2.png | | 3 | 2 | ~/product2-1.png |

product_charges

id(int) product_id(int) charge_id(int)
1 1 1
2 1 2
3 2 1

charges

id(int) name(varchar) price(decimal)
1 배송비 2500
2 포장비 500