테이블을 합쳐서 원하는 데이터를 추출할 수 있는 기능

select * from users u
left join point_users p
on u.user_id = p.user_id;

point 테이블에 없는 값이면 테이블을 합쳤을 때 NULL 값이 존재할 수 있음
Left Join 은 어디에 -> 뭐를 붙이는 것이 순서가 중요!

select * from users u
inner join point_users p
on u.user_id = p.user_id;

교집합만 추출하므로 NULL 값이 존재할 수 없음
1) is NULL - NULL 값 데이터 추출
select name, count(*) from users u
left join point_users pu on u.user_id = pu.user_id
where pu.point_user_id is NULL
group by name
2) is not NULL - NULL 값이 아닌 데이터 추출
select name, count(*) from users u
left join point_users pu on u.user_id = pu.user_id
where pu.point_user_id is not NULL
group by name
3) Union
Select 를 두 번 할게 아니라 한 번에 모아서 보고 싶은 경우
Select 문을 합쳐서 볼 수 있음. 단, 합치는 테이블의 필드명이 같아야 함

(
select '7 ' as month, c.title, c2.week, count(*) as cnt from checkins c2 inner join courses c on c2.course_id = c.course_id
inner join orders o on o.user_id = c2.user_id
where o.created_at < '2020-08-01'
group by c2.course_id, c2.week
order by c2.course_id, c2.week
)
union all (
select '8 ' as month, c.title, c2.week, count(*) as cnt from checkins c2 inner join courses c on c2.course_id = c.course_id
inner join orders o on o.user_id = c2.user_id
where o.created_at > '2020-08-01'
group by c2.course_id, c2.week
order by c2.course_id, c2.week
)
