sqlzoo-more join

1-11题参考链接
10.列出演員夏里遜福 ‘Harrison Ford’ 曾演出的電影,但他不是第1主角。

SELECT title
      FROM casting a 
          JOIN movie b ON(a.movieid=b.id)
          JOIN actor c ON(a.actorid=c.id)
              WHERE name='Harrison Ford' and ord!=1

13.List the film title and the leading actor for all of the films ‘Julie Andrews’ played in.
这道题与第10题的区别在于,子查询中id要表明是哪个id。另外,此题要列出演员参演过的电影名称,在同一年可能参演过多次同一部电影,所以电影名称并不严谨,要用电影id做子查询筛选条件

select title, name
from movie m
join casting c on m.id = c.movieid
join actor a on a.id = c.actorid
WHERE movieid in (
      SELECT movieid FROM casting 
           WHERE actorid in (
                 SELECT id FROM actor WHERE name='Julie Andrews'
)
             
)
and ord =1

14.按字母順序,列出哪一演員曾至少作30次第1主角。

SELECT name FROM actor a JOIN casting c ON(a.id= c.actorid)
            WHERE ord=1
                 GROUP BY name
                     HAVING COUNT(*)>=30 
                         ORDER BY name

15.列出1978年首影的電影名稱及角色數目,按此數目由多至少排列。
这个题目系统会报错,我看了很多博主都是这样的问题,语句应该是没有问题,待解答,如果有同学知道为什么,请留言,谢谢

SELECT distinct title,count(actorid) 
FROM movie m
JOIN casting c ON(c.movieid=m.id)
WHERE yr=1978 group by title
order by count(actorid) desc

16.列出曾與演員亞特·葛芬柯’Art Garfunkel’合作過的演員姓名
思路:筛选条件为A参演过的所有电影的且不包含A

SELECT name FROM casting JOIN actor ON actorid=id 
     WHERE name !='Art Garfunkel' and movieid IN
      (SELECT movieid FROM casting join actor ON actorid=id WHERE name='Art Garfunkel')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值