sqlzoo答案--more join
Posted 麦克白的王冠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlzoo答案--more join相关的知识,希望对你有一定的参考价值。
1.
列出1962年首影的電影, [顯示 id, title]
SELECT id,title
FROM movie
WHERE yr=1962
2.
電影大國民 ‘Citizen Kane‘ 的首影年份。
select yr
from movie
where title=‘Citizen Kane‘
3.
列出全部Star Trek星空奇遇記系列的電影,包括id, title 和 yr(此系統電影都以Star Trek為電影名稱的開首)。按年份順序排列。
select id,title,yr
from movie
where title like‘Star Trek%‘
order by yr
4.
id是 11768, 11955, 21191 的電影是什麼名稱?
select title
from movie
where id in (‘11768‘,‘11955‘,‘21191‘)
5.
女演員‘Glenn Close‘的編號 id是什麼?
select id
from actor
where name=‘Glenn Close‘
6.
電影北非諜影‘Casablanca‘ 的編號 id是什麼?
select id
from movie
where title =‘Casablanca‘
7.
列出電影北非諜影 ‘Casablanca‘的演員名單。
使用 movieid=11768, 這是你上一題得到的結果。
select name
from actor join casting on id=actorid
where movieid =‘11768‘
8.
顯示電影異型‘Alien‘ 的演員清單。
select name
from actor join (select actorid
from movie join casting on movie.id=casting.movieid
where title=‘Alien‘) t
on id=t.actorid
9.
列出演員夏里遜福 ‘Harrison Ford‘ 曾演出的電影。
select title
from movie join casting on id =movieid
where actorid =(select id from actor where name=‘Harrison Ford‘)
10.
列出演員夏里遜福 ‘Harrison Ford‘ 曾演出的電影,但他不是第1主角。
select title
from movie join casting on id =movieid
where actorid =(select id from actor where name=‘Harrison Ford‘)and ord!=1
11.
列出1962年首影的電影及它的第1主角。
select title,name
from actor join
(select title,actorid
from movie join casting on id=movieid
where yr=1962 and ord=1) t on id =actorid
12.
尊·特拉華達‘John Travolta‘最忙是哪一年? 顯示年份和該年的電影數目。
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.
列出演員茱莉·安德絲‘Julie Andrews‘曾參與的電影名稱及其第1主角。
她於1980再參與此電影Little Miss Marker. 原作於1934年,她也有參與。 電影名稱不是獨一的。在子查詢中使用電影編號。
select title,name
from movie join (select movieid,actorid from casting
where movieid in (SELECT distinct movieid FROM casting
WHERE actorid IN (
SELECT id FROM actor
WHERE name=‘Julie Andrews‘))and ord=1) t on movie.id=movieid join actor on actorid=actor.id
/*逻辑有点乱*/
14.
列出按字母順序,列出哪一演員曾作30次第1主角。
select name
from actor
where id in (select
actorid from (select actorid,count(movieid)
from casting
where ord=1 group by actorid
having count(movieid)>=30) t)
order by name
15.
列出1978年首影的電影名稱及角色數目,按此數目由多至少排列。
select title,c
from (select title,count(actorid) c
from movie join casting on id=movieid
where yr=1978
group by title
order by c desc) t
/*为什么非要嵌套呢,,,,*/
16.
列出曾與演員亞特·葛芬柯‘Art Garfunkel‘合作過的演員姓名。
select name
from actor join casting on actor.id=actorid
where movieid in (select movieid
from casting join actor on actor.id=actorid
where name=‘Art Garfunkel‘ ) and name!=‘Art Garfunkel‘
以上是关于sqlzoo答案--more join的主要内容,如果未能解决你的问题,请参考以下文章
sqlzoo练习答案--SELECT within SELECT Tutorial