我正在研究SQL Zoo.Net更多的连接操作。以下是问题的链接: http://sqlzoo.net/wiki/More_JOIN_operations
问题是#10:与所有1962年电影的主要明星一起列出电影。我已经得到了这个问题的正确答案
SELECT movie.title, actor.name
FROM movie
JOIN casting
ON casting.movieid = movie.id
JOIN actor
ON actor.id = casting.actorid
WHERE movie.yr = 1962
AND casting.ord = 1
但是我想出了我自己的版本,它不会因为列数太少而抛出错误。我试图了解我的查询有什么问题。我对SQL不是很熟练,所以我对它的工作方式的理解可能是错误的,我的问题可能看起来很愚蠢。这是我的查询不起作用。请解释为什么上层查询工作正常以及为什么我的查询不起作用。
select Title,actor.name as Actors
from movie
right join actor
on director = actor.id
where actor.id IN ( select actorid
from casting
where movieid IN (select id
from movie
where yr = 1962
)
and ord = 1
)
order by title
答案 0 :(得分:0)
解决方案:SQL Zoo.Net更多联接操作问题编号10
select movie.title,actor.name from movie
join casting on movie.id = casting.movieid and casting.ord = 1 and movie.yr=1962
join actor on actor.id = casting.actorid
说明:-
首先通过使用movieid和ord和yr条件字段加入电影和演员表。
(电影和演员)所连接的表通过字段actorid加入演员的第二秒。
谢谢。
答案 1 :(得分:0)
我的解决方案
SELECT title, name
FROM movie JOIN casting ON (movie.id = casting.movieid)
JOIN actor ON (casting.actorid = actor.id)
WHERE ord = 1 AND yr = 1962
这也可以