在mysql中自然连接3个表

时间:2017-02-13 01:07:19

标签: mysql natural-join

所以我有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个表(它返回组合表)但是当涉及到第三个表时,返回的表是空的。

1 个答案:

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