본문 바로가기
Programming/SQL

[MySQL] 3개 이상 테이블 LEFT JOIN

by 코딩하는 금융인 2023. 2. 12.

안녕하세요.

테이블이 3개 이상일 때 하나의 테이블로 결합해주는 MySQL 쿼리에 대해 알아보겠습니다.

 

 LEFT JOIN 설명 및 예시

※ JOIN에 대해서는 과거 포스팅했던 자료가 있으니 관심 있으시면 참고하시기 바랍니다.

2022.12.26 - [Programming/SQL] - [MySQL] Join 정리

 

[MySQL] Join 정리

안녕하세요. 오늘은 MySQL에서 가장 자주 사용하는 쿼리인 Join에 대해 정리해 보겠습니다. MySQL Joins ▣ 조인(Join)이란? SQL에서 Select 쿼리와 더불어 가장 자주 사용하는 쿼리로, 두 개 이상의 테이블

codingspooning.tistory.com

 

▣ MySQL Left Join

왼쪽 테이블(table1)의 모든 행과 오른쪽 테이블(table2)의 일치하는 행을 반환하는 일종의 조인 작업

- 일치하는 항목이 없으면 오른쪽 테이블 열에 대해 NULL 값이 반환됨.

 

▣ 3개 테이블 Left Join

: 예시 데이터

- users

+----+--------+
| id | name   |
+----+--------+
| 1  | John   |
| 2  | Jane   |
| 3  | Bob    |
+----+--------+

- orders

+----+---------+---------+
| id | user_id | date    |
+----+---------+---------+
| 1  | 1       | 2022-01-01 |
| 2  | 2       | 2022-02-01 |
| 3  | 3       | 2022-03-01 |
+----+---------+---------+

- order_items

+----+---------+---------+---------+
| id | order_id | product | quantity |
+----+---------+---------+---------+
| 1  | 1       | MacBook | 2       |
| 2  | 2       | iPhone  | 1       |
| 3  | 3       | iMac    | 1       |
| 4  | 2       | MacBook | 1       |
+----+---------+---------+---------+

 

: MySQL 쿼리

SELECT users.id, users.name, orders.date, order_items.product, order_items.quantity
FROM users
LEFT JOIN orders
ON users.id = orders.user_id
LEFT JOIN order_items
ON orders.id = order_items.order_id;

- LEFT JOIN 쿼리를 사용하여 주문 및 주문 항목과 함께 모든 사용자를 가져올 수 있음.

- 사용자에게 주문이 없으면 orders 및 order_items 열에 대해 NULL 값이 반환됨.

- 쿼리 결과는 다음과 같음.

+----+--------+---------+---------+---------+
| id | name   | date    | product | quantity |
+----+--------+---------+---------+---------+
| 1  | John   | 2022-01-01 | MacBook | 2       |
| 2  | Jane   | 2022-02-01 | iPhone  | 1       |
| 2  | Jane   | 2022-02-01 | MacBook | 1       |
| 3  | Bob    | 2022-03-01 | iMac    | 1       |
+----+--------+---------+---------+---------+

- 이 예에서 John은 하나의 주문, Jane은 두 개의 주문, Bob은 하나의 주문을 가지고 있음을 알 수 있음.

- 사용자에게 주문이 없으면 해당 열이 NULL 값으로 채워짐.

반응형

댓글