JOIN이 필요한 경우
필요한 데이터가 서로 다른 테이블에 있을 때
예) 주문 가격은 주문테이블에 있지만, 어떤 수단으로 결제를 했는지는 결제테이블에 있어요
JOIN의 기본 원리와 종류
기본적으로 엑셀의 Vlookup과 유사하다.
두 테이블이 공통으로 갖고 있는 컬럼을 찾는 것이 중요.
합치는 방식에 따른 종류는 두가지가 있다.
- LEFT JOIN
공통 컬럼을 기준으로 하나의 테이블에 값이 없더라도 모두 조회.
예) A테이블 : {1,2,3} / B테이블 : {2,3,4} 의 데이터가 있을 때
LEFT JOIN을 사용하면 A + (B와A의 공통된 값) 인 {1,2,3}이 나온다.
- INNER JOIN
공통 컬럼을 기준으로, 두 테이블 모두에 있는 값만 조회한다. A와 B의 교집합.
예) A테이블 : {1,2,3} / B테이블 : {2,3,4} 의 데이터가 있을 때
INNER JOIN을 사용하면 (A + B) 의 공통된 값인 {2,3}이 나온다.
-- LEFT JOIN
select 조회 할 컬럼
from 테이블1 a left join 테이블2 b on a.공통컬럼명=b.공통컬럼명
-- INNER JOIN
select 조회 할 컬럼
from 테이블1 a inner join 테이블2 b on a.공통컬럼명=b.공통컬럼명
팁! - 공통컬럼은 묶어주기 위한 ‘공통 값’ 이기 때문에 두 테이블의 컬럼명은 달라도 괜찮습니다. 예를 들어 주문정보에는 ‘고객ID’, 고객정보에는 ‘고객아이디’ 라고 컬럼명이 되어있다면, 테이블1.고객ID=테이블2.고객아이디 와 같이 묶어줄 수 있습니다.
[실습] JOIN 을 이용하여 두 개의 테이블에서 데이터를 조회해보기
주문 테이블과 고객 테이블을 cusomer_id 를 기준으로 left join 으로 묶어보기 (조회 컬럼 : order_id, customer_id, restaurant_name, price, name, age, gender)
select a.order_id,
a.customer_id,
a.restaurant_name,
a.price,
b.name,
b.age,
b.gender
from food_orders a left join customers b on a.customer_id=b.customer_id
'내일배움캠프 > SQL' 카테고리의 다른 글
[SQL]피벗테이블 만들기 (0) | 2024.11.18 |
---|---|
[SQL]데이터에서 예상하지 못한 값이 나왔을 때 (이상한 값, 값이 없음 등) (0) | 2024.11.18 |
[SQL]Subquery로 여러 번의 연산을 한 번에 (2) | 2024.11.15 |
[SQL]3주차_IF, CASE (조건에 따라 포맷을 다르게 지정하기) (0) | 2024.11.14 |
[SQL]3주차_Query 결과를 바로 사용할 수 없는 경우(REPLACE, SUBSTRING, CONCAT) (0) | 2024.11.14 |