데이터 분석 20일차
5 × 3 = 15개의 결과가 생성된다! <기본 구조>
SELECT *
FROM 테이블A
CROSS JOIN 테이블B;
또는 INNER JOIN의 ON 절을 생략하면 Cross Join과 같은 결과를 얻을 수 있다.
SELECT *
FROM 테이블A, 테이블B;
<예시>
Table A
| id | name |
|---|---|
| 1 | Alice |
| 2 | Bob |
Table B
| id | category |
|---|---|
| 101 | Electronics |
| 102 | Books |
- cross join 하기
SELECT A.id AS A_id, A.name, B.id AS B_id, B.category FROM A CROSS JOIN B
✅ Cross Join Result
| A_id | name | B_id | category |
|---|---|---|---|
| 1 | Alice | 101 | Electronics |
| 1 | Alice | 102 | Books |
| 2 | Bob | 101 | Electronics |
| 2 | Bob | 102 | Books |
두 개의 INNER JOIN을 사용하여 세 개의 테이블을 연결하는 경우<기본 구조>
SELECT A.컬럼1, B.컬럼2, C.컬럼3
FROM 테이블A A
INNER JOIN 테이블B B ON A.공통키 = B.공통키
INNER JOIN 테이블C C ON B.다른공통키 = C.다른공통키;
<예시>
Customers
| customer_id | customer_name |
|---|---|
| 1 | Alice |
| 2 | Bob |
Orders
| order_id | customer_id | product_name |
|---|---|---|
| 1001 | 1 | Laptop |
| 1002 | 1 | Mouse |
| 1003 | 2 | Keyboard |
Payments
| payment_id | order_id | amount |
|---|---|---|
| 501 | 1001 | 1200.00 |
| 502 | 1003 | 100.00 |
- join 하기
SELECT c.customer_name, o.order_id, o.product_name, p.amount FROM Customers c LEFT JOIN Orders o ON c.customer_id = o.customer_id LEFT JOIN Payments p ON o.order_id = p.order_id;
✅ Multiple Join Result (LEFT JOIN)
| customer_id | customer_name | order_id | product_name | payment_id | amount |
|---|---|---|---|---|---|
| 1 | Alice | 1001 | Laptop | 501 | 1200.00 |
| 1 | Alice | 1002 | Mouse | NULL | NULL |
| 2 | Bob | 1003 | Keyboard | 502 | 100.00 |
Cross join과 left join 하는 leetcode문제!
✔️ 문제 풀이

WITH 절을 사용하여 다시 조인하는 방식으로 여러 테이블을 연결해 왔는데, 이번에 또 다른 방식의 JOIN을 배우게 되어 유익했다~!!