SQLZOO MORE JOIN参考答案(含表格样式和解题思路)

通过做了这么多SQL 的题目,我发现解题思路难点主要有三个:1:逆向思考,需要你从想要的答案逆向思考到如何从很多表中取出。2:程序是从内至外而写。3:每个表连接的主键是你解题的重点,有一条思维主键图,就可以按图索骥。6.Cast list for CasablancaObtain the cast list for ‘Casablanca’.The cast list is the n...
摘要由CSDN通过智能技术生成

通过这段时间做SQL 的题目,我发现解题思路难点主要有三个:
1:逆向思考,需要你从想要的答案逆向思考到如何从很多表中以怎样的方式取出。
2:所以程序是从内至外而写。
3:正确的找到每个表连接的主键,以合理的顺序应用JOIN和GROUP BY
在这里插入图片描述
这次是针对SQLZOO中多表查询所写的练习题。

我是从第六题开始写,前5题省略。

  1. Cast list for Casablanca

Obtain the cast list for ‘Casablanca’.

The cast list is the names of the actors who were in the movie.

Use movieid=11768, (or whatever value you got from the previous question)

思路:
1: 从 casting 表中 找到 movieid 对应的 actorid
2: 从actor 表中 找到 actorid 对应的 name

SELECT ac.name
FROM actor AS ac inner join casting AS ca
ON ac.id=ca.actorid
AND ca.movieid=11768

这种由于连接的表不多,我们也可以用子查询的方法:

SELECT name 
FROM actor 
WHERE id in 
(SELECT actorid
FROM casting 
WHERE movieid = 11768)

可以注意到虽然列的名字不一样(actorid & id)但是 子查询的时候他也可以进行自动匹配

  1. Alien cast list

Obtain the cast list for the film ‘Alien’

思路:
1:从 movie 表中 找到 ‘Alien’ 对应的 id
2: 从 casting 表中 找到 movieid(1的 id) 对应的 actorid
3: 从actor 表中 找到 actorid 对应的 name

Select a.name from actor as a inner join (
Select c.actorid
From movie as m inner join casting as c
On m.id=c.movieid
And m
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值