안녕하세요.
테이블이 3개 이상일 때 하나의 테이블로 결합해주는 MySQL 쿼리에 대해 알아보겠습니다.
LEFT JOIN 설명 및 예시
※ JOIN에 대해서는 과거 포스팅했던 자료가 있으니 관심 있으시면 참고하시기 바랍니다.
2022.12.26 - [Programming/SQL] - [MySQL] Join 정리
▣ 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 값으로 채워짐.
반응형
'Programming > SQL' 카테고리의 다른 글
[SQL] NTILE 사용법 및 예제 (0) | 2023.06.28 |
---|---|
[SQL] 교집합 & 차집합 (INTERSECT, MINUS) (1) | 2023.02.17 |
[MySQL] 기간 조회하기 (between) (0) | 2023.02.05 |
[MySQL] count 조건 및 방법 (예시) (0) | 2023.01.24 |
[MySQL] Using ON 비교 및 차이 (0) | 2023.01.05 |
댓글