ex) 마켓 데이터베이스의 회원테이블 : 구매테이블 = 1 : N
회원 테이블의 아이디 : 한명만 있음 -> PK
구매 테이블의 아이디 : 회원 1명이 구매를 여러번 함 -> FK
SELECT <열 목록>
FROM <첫 번째 테이블>
INNER JOIN <두 번째 테이블>
ON <조인될 조건>
[WHERE 검색 조건]
# INNER JOIN을 그냥 JOIN이라고 써도 바로 INNER JOIN이라고 인식함
#내가 찜한 콘텐츠
SELECT title AS "제목",
poster_url AS "포스터 이미지"
FROM movie
INNER JOIN mylist
ON movie.movie_idx = mylist.movie_idx
WHERE profile_idx = 1;
# 감독 검색 - 하라 케이이치
SELECT title AS "제목",
poster_url AS "포스터 이미지"
FROM movie
INNER JOIN director_participate
ON movie.movie_idx = director_participate.movie_idx
WHERE director_idx = (SELECT director_idx FROM director WHERE name = "하라 케이이치");
# 배우 검색 - 앤 해서웨이
SELECT title AS "제목",
poster_url AS "포스터 이미지"
FROM movie
INNER JOIN actor_participate
ON movie.movie_idx = actor_participate.movie_idx
WHERE actor_idx = (SELECT actor_idx FROM actor WHERE name = "앤 해서웨이");
# 크리에이터 검색 - 김은숙
SELECT title AS "시리즈 제목",
poster_url AS "포스터 이미지"
FROM series
INNER JOIN creater_participate
ON series.series_idx = creater_participate.series_idx
WHERE creater_id = (SELECT creater_id FROM creater WHERE name = "김은숙");
# 각본 검색 - 최동훈
SELECT title AS "영화 제목",
poster_url AS "포스터 이미지"
FROM movie
INNER JOIN writer_participate
ON movie.movie_idx = writer_participate.movie_idx
WHERE writer_idx = (SELECT writer_idx FROM writer WHERE name = "최동훈");
# 알림 - profile_idx=1
SELECT title AS "알림 제목",
content AS "알림 내용",
alarm_img_url AS "알람 이미지",
case
when timestampdiff(hour, alarm.createdAt, CURRENT_TIMESTAMP) < 24
then concat(timestampdiff(hour, alarm.createdAt, CURRENT_TIMESTAMP), '시간 전')
else date_format(alarm.createdAt, '%m월 %d일')
end AS "알람 날짜"
FROM alarm
WHERE alarm.status = 1
ORDER BY alarm.createdAt DESC;