SQL ZOO[MySQL]More JOIN operations

2022. 3. 15. 00:48Site/SQL ZOO

whole databases


example of movie table


example of actor table


example of casting table


1962년도 영화 id값과, 제목 조회


영화 Citizen Kane의 개봉연도 조회


영화 Stark Trek의 모든 시리즈 제목, id, 개봉연도 조회

Star Trek시리즈[Star Trek으로시작되는]를 조회하기 위해 LIKE연산자 + 와일드카드 %를 시용하고 yr로 정렬


배우 Glenn Close의 id값 조회


영화 Casablanca의 id값 조회


영화 Casablanca의 캐스팅된 배우 조회

힌트에서 Casablanca의 movieid값이 11768이라고 했습니다

Casablanca의 캐스팅된 배우의 리스트를 얻기위해서는 배우이름정보가 들어있는 actor테이블과 movieid값이 들어있는 casting테이블을 공통된키값[casting.actorid, actor.id]로 조인하여 출력하였습니다


영화 Alien에 캐스팅된 배우 조회

제목이 Alien인 title을 조회하려 하는데 movie테이블과 actor테이블 공통된 키값[X]

-> actor과 casting테이블의 공통된키값[casting.actorid, actor.id]으로 조인하고

    casting과 movie테이블을 공통된키값[movie.id, casting.movieid]으로 조인하여 접근하였습니다


Harrison Ford가 캐스팅된 영화 조회

이것역시 actor테이블과 movie테이블을 조인을 할수없어서

다중조인을 통해 접근해야됩니다[movie 조인 casting -> actor 조인 casting]


Harrison Ford가 조연으로 출연한 영화 조회 [ord=1(주연), ord!=1(조연)]

여기서 추가된것은 ord가 1이 아닌값을 넣어주어야 됩니다

일단 actor의 이름 = Harrison Ford어야 되지만 actor와 movie는 조인을 할수없으므로 casting과 조인 -> casting과 actor을 조인 -> name과 ord에 모두 접근할수있으므로 WHERE절에 조건을 추가해주었습니다


1962년에 개봉한 영화의 주연과 영화 조회

이번에는 주연을 찾아야 되므로 9번 문제와 반대로 ord =1인 조건을 넣어주면 될 것 같습니다


Rock Hudson이 작품을 3개이상 출연한 연도와 작품의 수 조회

일단 Rock Hudson이름으로 연도와 작품수를 조회해볼려하니 movie테이블과 actor테이블은 조인할수없으므로 casting과 movie를 조인하고 actor테이블을 조인하였습니다

name = Rock Hudson 조건을 걸고 yr로 그룹하여 Having 조건절에 3회이상 출연한 작품을 COUNT해주고 SELECT절에 해당 연도와 작품을 COUNT를 사용하여 작성하였습니다

 


Julie Andrews 가 출연한 모든 영화의 영화 제목과 주연 배우 조회

*

[전체 SQL문]

SELECT title, name
FROM movie
JOIN casting ON(casting.movieid=movie.id AND ord=1)
JOIN actor ON(casting.actorid=actor.id)
WHERE movie.id IN (10016,12354,12497,12766,13846,15145,15476,16870,17117,17445,17765,18270,20136,20136,20180,20181,20509,2062,21023,21154,21171,21483)

*

먼저 Julie Andrews가 출연한 작품을 출력하기위해 WHERE절에 Julie Andrews가 출연한 작품의 movie.id입력

Julie Andrews가 출연한 주연을 출력하기 위해 movie테이블과 casting테이블의 조인연산에 ord=1로 설정해주어 name 접근가능 -> 추가로 actor과  casting테이블을 조인하여 title접근가능하게 해주었습니다

 


최소 15개의 주연 역할을 맡은 배우 조회

15개이상의 주연의 수를 알기위해 먼저 배우이름을 그룹화하여 Having절에 COUNT(actor.name)을 통해 15이상 주역인 배우를 조건시켜주었습니다


1978년에 개봉된 영화를 주연 배우의 수와 제목 순으로 조회

먼저 1978년에 개봉한 영화에 맞추기위해 조건을 yr=1978, movie.title별로 그룹시켜고 주연배우수를 조회하기위해 COUNT를 이용해 actor.id의 수를 세어주며 내림차순으로 DESC 그 뒤 title순으로 정렬시켜주었습니다

 


Art Garfunkel과 작업한 모든 사람 조회

이 문제에서는  서브쿼리를 사용해야되었습니다

서브쿼리에 조인연산을 통해 name에 접근하여 이름이 Art Garfunkel인 조건을 넣어주고

메인 쿼리부분에서 actor != Art Garfunkel 통해 작업한 사람중에 Art Garfunkel라는 이름을 제외시켜주어야 됩니다

'Site > SQL ZOO' 카테고리의 다른 글

SQL ZOO[MySQL]Using Null  (0) 2022.03.20
SQL ZOO[MySQL]JOIN Quiz 2  (0) 2022.03.15
SQL ZOO[MySQL] JOIN Quiz  (0) 2022.03.11
SQL ZOO[MySQL] The JOIN operation  (0) 2022.03.11
SQL ZOO[MySQL] SUM and COUNT Quiz  (0) 2022.03.06