sqlzoo练习答案--More JOIN operations

来源:互联网 发布:一元云购源码后台登录 编辑:程序博客网 时间:2024/05/17 09:35

Movie Database

This tutorial introduces the notion of a join. The database consists of three tables movie , actor and casting .

movieactorcastingididmovieidtitlenameactoridyr orddirector  budget  gross     
1、List the films where the yr is 1962 [Show idtitle]
[sql] view plain copy
  1. SELECT id, title  
  2.  FROM movie  
  3.  WHERE yr=1962  

2、Give year of 'Citizen Kane'.
[sql] view plain copy
  1. select yr from movie where title='Citizen Kane'  

3、List all of the Star Trek movies, include the idtitle and yr (all of these movies include the words Star Trek in the title). Order results by year.
[sql] view plain copy
  1. select id,title,yr from movie where title like '%Star Trek%' order by yr  

4、What are the titles of the films with id 11768, 11955, 21191
[sql] view plain copy
  1. select title from movie where id in (11768,11955,21191)  

5、What id number does the actress 'Glenn Close' have?
[sql] view plain copy
  1. select id from actor where name='Glenn Close'  

6、What is the id of the film 'Casablanca'
[sql] view plain copy
  1. 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.

[sql] view plain copy
  1. select name from actor inner join casting on actor.id=casting.actorid and movieid=11768  

8、Obtain the cast list for the film 'Alien'

[sql] view plain copy
  1. 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

[sql] view plain copy
  1. 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]

[sql] view plain copy
  1. 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.

[sql] view plain copy
  1. 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.

[sql] view plain copy
  1. SELECT yr,COUNT(title) FROM  
  2.   movie JOIN casting ON movie.id=movieid  
  3.          JOIN actor   ON actorid=actor.id  
  4. WHERE name='John Travolta'  
  5. GROUP BY yr  
  6. HAVING COUNT(title)=(SELECT MAX(c) FROM  
  7. (SELECT yr,COUNT(title) AS c FROM  
  8.    movie JOIN casting ON movie.id=movieid  
  9.          JOIN actor   ON actorid=actor.id  
  10.  WHERE name='John Travolta'  
  11.  GROUP BY yr) AS t  
  12. )  

13、List the film title and the leading actor for all of the films 'Julie Andrews' played in.

[sql] view plain copy
  1. SELECT DISTINCT(title),name FROM movie inner join casting on movie.id=movieid  
  2. inner join actor on actorid=actor.id and ord=1  
  3. WHERE movieid IN (  
  4.   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.

[sql] view plain copy
  1. SELECT name  
  2.     FROM casting JOIN actor  
  3.       ON  actorid = actor.id  
  4.     WHERE ord=1  
  5.     GROUP BY name  
  6.     HAVING COUNT(movieid)>=30  

15、List the films released in the year 1978 ordered by the number of actors in the cast.

[sql] view plain copy
  1. 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'.

[sql] view plain copy
  1. select name from actor inner join casting on actor.id=casting.actorid and casting.movieid in (select movieid from actor inner j

原文链接  http://blog.csdn.net/crazy__chen/article/details/50514100

原创粉丝点击