2017-02-13 7 views
0

私は3つのテーブル、ムービー(IDと名前の列を含む)、ディレクター(id、first_name、last_name)とmovies_directors(movie_idとdirector_id)を持っています。これらの3つのテーブルは、同じ値(director_idとmovie_id)を持っていて、特定の列を投影しているので、この3つのテーブルを結合したいと思います。今まで私が何をしたのか: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つのテーブル(それは結合テーブルを返します)でも動作しますが、3つ目のテーブルの場合、返されるテーブルは空です。

答えて

0

ナチュラル・ジョインでは、同じ名前のジョイン・カラムを持つためにジョインで呼び出される2つのテーブルが必要です。これはスキーマには当てはまりません。代わりに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 
関連する問題