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

本文介绍了在SQLZOO中解决多表查询问题的解题思路和方法,包括逆向思考、子查询和JOIN操作的运用。通过具体电影数据的例子,如'Casablanca'的演员列表、'Harrison Ford'主演的电影等,阐述了如何通过不同表之间的连接获取所需信息,同时提到了ORDER BY、GROUP BY等关键操作的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过这段时间做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.title Like 'Alien'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值