MYSQL 여러개 테이블 JOIN 하는법

원승현·2022년 12월 16일
0

My SQL

목록 보기
2/3

데이터 테이블을 만들다 보면 여러개의 fk로 연결되어 있는 경우가 99%이다.그에따라 원하는 데이터를 뽑으려다보면 여러개의 테이블을 사용해야 한다. 각각의 테이블이 다른 테이블에서 id및 다른 정보를 참조해서 정보를 가져오기 때문에 그 각각의 테이블을 전부 JOIN을 걸어 줘야 한다.
1.카테고리 테이블
name 칼럼은 성별을 나타내는것이다.

2.products테이블

이 테이블은 전반적으로 제품을 담아둔 테이블이다.
해당 테이블은 총 3개의 fk를 사용한다.
3.product_options
이 테이블은 2번의products 테이블의 상세 정보 및 옵션에 대한 테이블이다. 왜 2번과 3번 테이블을 분리하냐고 할 수도 있지만 추후 데이터양이 방대하게 많아진다하면 한테이블에 모든 정보를 넣는 테이블 즉 비관계적 데이터 테이블 보단 각각 정보를 참초,받아오게 하는 관계형 데이터 테이블이 훨씬 효율적이다.

4.colors테이블

5.sizes테이블

위에 5개의 테이블이 있다고 가정을 하자. 프론트 쪽에서 원하는 데이터는 예를들어
1.제품명
2.제품 가격
3.제품 색상
4.제품의 고유 id값
5.제품의 사이즈
이 5가지의 정보가 필요하다고 가정을하자

그럼 이 데이터를 뽑으려면
'SELECT
p.name,
po.price,
po.color,
p.price
po.size
FROM products p
JOIN product_options po ON po.product_id = p.id
JOIN sizes s ON s.id = po.size_id
WHERE p.id = ?

이런식으로 결합을 하면 된다.
JOIN 이후에는 어느 테이블을 결합할지 작성을 하고,
ON 이후에는 조건을 걸어주면 된다.
많은 데이터를 뽑아야 할때도 위와 같은 방법으로 겁먹지 말고
천천히 결합을 하면 된다.

profile
Back-Dev

0개의 댓글