Post

SQL Grammer (8) - Join

SQL Grammer (8) - Join




Join


필요한 데이터가 서로 다른 테이블에 있을 때 사용할 수 있는 문법입니다. 공통 컬럼을 기준으로 두 테이블을 합쳐서 각각 테이블에서 필요한 데이터를 조회할 수 있습니다.

Join의 종류

  • Inner Join
    • 가장 많이 사용하는 조인으로, 두 테이블 모두에 있는 값만 조회하는 것을 말합니다.
  • OuterJoin
    • left, right, full 이 있으며 각각 왼쪽 테이블의 모든 값 조회, 오른쪽 테이블의 모든 값 조회, 모든 테이블의 모든 값 조회를 할 수 있습니다.
  • Cross Join
    • 한쪽 테이블의 모든 행과 다른쪽 테이블의 모든 행을 조인시키는 기능을 합니다. 전체 행 개수는 두 테이블의 각 행의 개수를 곱한 수 입니다.
  • Self Join
    • 자체 조인은 자기 자신과 조인하므로 1개의 테이블을 사용합니다.




사용 예시

예시 1

  • 한국 음식의 주문별 결제수단과 수수료율을 조회하기


1
2
3
4
5
6
7
select f.order_id,  
       f.restaurant_name,  
       f.price,  
       p.pay_type,  
       p.vat  
from food_orders f left join payments p on f.order_id=p.order_id  
where cuisine_type='Korean';
order_idrestaurant_namepricepay_typevat
1477147Hangawi30750card0.25
1476856Woorijip8250card0.1
1477600Hangawi6740cash0.25
1478363Cho Dang Gol29250card0.2
1477302Dons Bogam BBQ & Wine Bar12230card0.2

예시 2

  • 주문 가격과 수수료율을 곱하여 주문별 수수료 구하기
  • 조회 컬럼: 주문번호, 식당이름, 주문가격, 수수료율, 수수료) 수수료가 있는 경우만 조회
1
2
3
4
5
6
select f.order_id,  
       f.restaurant_name,  
       f.price,  
       p.vat,  
       (f.price * p.vat) as '수수료'  
from food_orders f inner join payments p on f.order_id=p.order_id
order_idrestaurant_namepricevat수수료
1477147Hangawi30750
0.257687.5
1477685Blue Ribbon Sushi Izakaya120800.13
1570.3999423980713
1477070Cafe Habana12230
0.1
1223.0000182241201
1477334Blue Ribbon Fried Chicken292000.13
3795.99986076355
1478249Dirty Bird to Go11590
0.1
1159.0000172704458