2017-02-13 637 views
0

所以我有3個表,電影(包含列id和名稱),導演(id,first_name,last_name)和movies_directors(movie_id和director_id)。我想合併這3個表格,因爲它們具有相同的值(director_id和movie_id),然後項目特定的列。那就是我到目前爲止所做的:自然連接mysql中的3個表

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

自然連接需要連接中調用的兩個表具有名稱相同的連接列,但對於您的模式而言並非如此。使用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