군침이 싹 도는 코딩
MySQL 테이블을 합치기 (join) 본문


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은 기준이 되는 테이블의 모든 데이터를 가져온 다음
나머지 테이블을 붙이는 식이다
따라서 이렇게 할 경우 주문을 하지 않은 고객의 데이터까지 모두
가져올수 있게 된다.
그래서 조인을 사용할때에는 레프트 조인인지 그냥 조인인지 여부를
잘 판단해서 사용하여야 데이터의 누락이 없다
'Database > MySQL' 카테고리의 다른 글
MySQL null 을 다른값으로 대체하는 함수 (ifnull) (0) | 2022.12.08 |
---|---|
MySQL Foreign Keys (0) | 2022.12.08 |
MySQL 조건문 처리하는 방법 (case,if) (0) | 2022.12.07 |
MySQL 데이터를 가져오는 여러 방법 (!=,not like,between A and B,in,is null) (0) | 2022.12.07 |
MySQL 시간의 차이를 구하는 함수 (datediff,date_add,date_sub,interval) (0) | 2022.12.07 |