sqlzoo練習答案--More JOIN operations
阿新 • • 發佈:2019-01-08
select id from movie where title='Casablanca'
7、
Obtain the cast list for 'Casablanca'.
what is a cast list?The cast list is the names of the actors who were in the movie.
Use movieid=11768, this is the value that you obtained in the previous question.
select name from actor inner join casting on actor.id=casting.actorid and movieid=11768
8、Obtain the cast list for the film 'Alien'
select name from actor inner join movie on title='Alien' inner join casting on actor.id=casting.actorid and movie.id=casting.movieid
9、List the films in which 'Harrison Ford' has appeared
select title from movie inner join actor on name='Harrison Ford' inner join casting on movie.id=casting.movieid and actor.id=casting.actorid
10、List the films where 'Harrison Ford' has appeared - but not in the starring role. [Note: the ord field of casting gives the position of the actor. If ord=1 then this actor is in the starring role]
select title from movie inner join actor on name='Harrison Ford' inner join casting on movie.id=casting.movieid and actor.id=casting.actorid and ord!=1
11、List the films together with the leading star for all 1962 films.
select movie.title,actor.name from movie inner join actor on yr=1962 inner join casting on movie.id=casting.movieid and actor.id=casting.actorid and ord=1
12、Which were the busiest years for 'John Travolta', show the year and the number of movies he made each year for any year in which he made more than 2 movies.
SELECT yr,COUNT(title) FROM
movie JOIN casting ON movie.id=movieid
JOIN actor ON actorid=actor.id
WHERE name='John Travolta'
GROUP BY yr
HAVING COUNT(title)=(SELECT MAX(c) FROM
(SELECT yr,COUNT(title) AS c FROM
movie JOIN casting ON movie.id=movieid
JOIN actor ON actorid=actor.id
WHERE name='John Travolta'
GROUP BY yr) AS t
)
13、List the film title and the leading actor for all of the films 'Julie Andrews' played in.
SELECT DISTINCT(title),name FROM movie inner join casting on movie.id=movieid
inner join actor on actorid=actor.id and ord=1
WHERE movieid IN (
SELECT t2.movieid FROM actor t1 inner join casting t2 on t2.actorid=t1.id and name='Julie Andrews')
14、Obtain a list, in alphabetical order, of actors who've had at least 30 starring roles.
SELECT name
FROM casting JOIN actor
ON actorid = actor.id
WHERE ord=1
GROUP BY name
HAVING COUNT(movieid)>=30
15、List the films released in the year 1978 ordered by the number of actors in the cast.
select title,count(actorid) from movie inner join casting on movie.id=movieid and yr=1978 group by title order by 2 desc
16、List all the people who have worked with 'Art Garfunkel'.
select name from actor inner join casting on actor.id=casting.actorid and casting.movieid in (select movieid from actor inner join casting on actor.id=casting.actorid and name='Art Garfunkel') and name!='Art Garfunkel'