【发布时间】:2009-01-11 23:31:50
【问题描述】:
呃,好吧,我不擅长解释事情,所以我先给你引用和链接:
Problem 4b(接近底部):
4b。列出所有“朱莉·安德鲁斯”电影的片名和男主角。
电影(id、标题、年份、分数、票数、导演)
演员(ID,姓名)
cast(movieid, actorid, ord)
(注意:movie.id = cast.movieid, actor.id = cast.actorid)
我的回答(不起作用):
SELECT title, name
FROM casting JOIN movie
ON casting.movieid = movie.id
JOIN actor
ON casting.actorid = actor.id
WHERE name = 'Julie Andrews'
AND ord = 1
这里的问题是,它想要以“朱莉·安德鲁斯”为演员(不一定是主角)的电影的主要演员名单,但我所做的只是让她的电影是领先(ord = 1)。
如果没有“朱莉·安德鲁斯”,我如何指定主要演员名单?我怀疑我必须对 GROUP BY 做点什么,但我现在不知道是什么...
编辑:我需要使用嵌套的 SELECT 吗?
【问题讨论】:
-
您将在我的回答中看到,子查询(嵌套 SELECT)不是必需的。它使查询更具可读性,但完全可以不这样做。
-
问题:这样做是否更有效率(我的意思是,而不是子查询)?
-
@Daddy Warbox:这取决于。通常不会,但通常成本相同。
-
@Daddy Warbox:这令人困惑!我的意思是,通常直接连接更有效,但通常子选择会被优化为相同或相似的查询执行计划。
-
是的,这就是我要问的。谢谢。我会记住这一点的。