군침이 싹 도는 코딩

MySQL 테이블을 합치기 (join) 본문

Database/MySQL

MySQL 테이블을 합치기 (join)

mugoori 2022. 12. 8. 12:09

 

 

orders 테이블
customers 테이블

select *
from orders
join customers
on orders.customer_id = customers.id ;

# 두 테이블을 하나로 합치기 위해 join 을 사용한다

먼저 두 테이블 사이에 같은 컬럼이 있어야한다 여기서는

orders 테이블의 customer_id (Foreign Keys) 와

customers 테이블의 id 가 같은것이므로

이것을 기준으로 하나로 합칠수있다.

* Foreign Keys : 테이블을 만들때 컬럼의 값을 다른 테이블에서 가져오는것

 

 

select *
from orders as o
join customers as c
on o.customer_id = c.id ;


select *
from orders o
join customers c
on o.customer_id = c.id ;

# 위 코딩은 이 두가지 방식으로 줄여서도 사용이 가능하다.

 

 

 

-- 두 테이블 합쳐서, 주문아이디, 주문날짜, 금액, 고객아이디, 고객이메일을 가져오시오

select o.id,o.order_date,o.amount,c.id as c_id,c.email
from orders o
join customers c
on o.customer_id = c.id ;

# 두 테이블의 데이터가 모두 필요한 예제이므로 테이블을 조인으로 합쳐준다

그 뒤 원하는 컬럼을 셀렉트 옆에 기입해준다.

 

 

 

-- 모든 고객 데이터를 기준으로, 주문정보를 붙여주세요.

select *
from customers c 
left join orders o 
on c.id = o.customer_id ;

# 위 예제에서는 고객의 데이터 모두가 필요하다 따라서 그냥 조인만 썼을경우

orders 안에 주문을 하지 않은 고객 데이터가 누락된채 합쳐지기 때문에

이럴때에는 left join 을 쓰고 orders 테이블을 기준으로 합쳐준다

left join은 기준이 되는 테이블의 모든 데이터를 가져온 다음 

나머지 테이블을 붙이는 식이다

따라서 이렇게 할 경우 주문을 하지 않은 고객의 데이터까지 모두

가져올수 있게 된다.

그래서 조인을 사용할때에는 레프트 조인인지 그냥 조인인지 여부를

잘 판단해서 사용하여야 데이터의 누락이 없다