SQL - cross join, 다중 join

hyun-jin·2025년 3월 18일

데이터 분석

목록 보기
22/100
post-thumbnail

데이터 분석 20일차

1. Cross join

  • Cross Join은 두 개의 테이블을 조인할 때 모든 행을 조합하여 결과를 생성하는 방식
    💡 A 테이블에 5개의 행이 있고 B 테이블에 3개의 행이 있으면, 5 × 3 = 15개의 결과가 생성된다!

<기본 구조>

SELECT * 
FROM 테이블A 
CROSS JOIN 테이블B;

또는 INNER JOIN의 ON 절을 생략하면 Cross Join과 같은 결과를 얻을 수 있다.

SELECT * 
FROM 테이블A, 테이블B;

<예시>
Table A

idname
1Alice
2Bob

Table B

idcategory
101Electronics
102Books
  • 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_idnameB_idcategory
1Alice101Electronics
1Alice102Books
2Bob101Electronics
2Bob102Books

2. 두 개의 Join 사용하기

  • 두 개의 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_idcustomer_name
1Alice
2Bob

Orders

order_idcustomer_idproduct_name
10011Laptop
10021Mouse
10032Keyboard

Payments

payment_idorder_idamount
50110011200.00
5021003100.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_idcustomer_nameorder_idproduct_namepayment_idamount
1Alice1001Laptop5011200.00
1Alice1002MouseNULLNULL
2Bob1003Keyboard502100.00

Cross join과 left join 하는 leetcode문제!

✔️ 문제 풀이


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

0개의 댓글