1

所以我有 3 个表,电影(包含列 id 和名称)、导演(id、first_name、last_name)和movies_directors(movie_id 和director_id)。我想组合这 3 个表,因为它们具有相同的值(director_id 和 movie_id),然后投影特定列。这就是我到目前为止所做的:

select first_name, last_name, name 
from movies natural join directors natural join movies_directors 
where movies_directors.movie_id=movies.id and  
movies_directors.director_id=directors.id; 

但是,最终产生的表是空的!我也尝试使用视图,它适用于 2 个表(它返回组合表),但是当涉及到第三个表时,返回的表是空的。

4

1 回答 1

1

自然连接要求连接中涉及的两个表具有一个名称相同的连接列,而您的模式并非如此。将 anINNER JOIN与显式ON子句一起使用:

SELECT t1.name AS movie_name,
       t2.first_name,
       t2.last_name,
FROM movies natural t1
INNER JOIN directors t2
    ON t1.id = t2.movie_id
INNER JOIN movies_directors t3
    ON t2.id = t3.director_id
于 2017-02-13T01:12:39.387 回答