SQL zoonet更多加入操作#10

时间:2018-01-03 04:26:07

标签: sql

我正在研究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

2 个答案:

答案 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

这也可以