Lead actor in Julie Andrews movies
在做sqlzoo上的练习题时出现的一些问题,题目的大意是列出 'Julie Andrews' 参演的所有电影的主演最开始使用的代码是:
select title, name from
movie
join casting on movie.id = casting.movieid
join actor on actor.id = casting.actorid
where ord =1 and name = 'Julie Andrews'
然后得到的结果是
title | name |
---|---|
Sound of Music, The | Julie Andrews |
Victor/Victoria | Julie Andrews |
标准的结果中还有一行,看了下标题才发现是没有审好题。怪不得得不到正确答案。
可能是受到前面几个题目的影响吧,把三个表串起来当成一个大表来进行挑选,不过后面遇到大的数据使用这种方法应该会比较慢。
多个表格合并在一起的时候筛选的字段后面紧跟的表格可以不是字段本身的表格
select title, name
from movie
join casting on movie.id = casting.movieid and ord=1
join actor on actor.id = casting.actorid
where movie.id in
(select movieid from casting
where actorid in (select id
from actor where name = 'Julie Andrews')
)
代码还是要写规范,看了阿里云的SQL代码规范,写出来的就是漂亮易懂,逻辑也清楚。刚开始打基础就要把良好的习惯养成。
SQL逻辑:
- 筛选Julie Andrews的演员id
- 根据演员id找到对应的电影id
- 根据电影的id找到该电影的主演是谁
注意在join on 中可以添加筛选条件