所以我有3个表,电影(包含列id和名称),director(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个表(它返回组合表)但是当涉及到第三个表时,返回的表是空的。
答案 0 :(得分:0)
自然连接需要在连接中调用两个表,以使连接列具有相同的名称,这与您的模式不同。使用INNER 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