2017-02-13 3 views
0

Итак, у меня есть 3 таблицы, фильмы (содержит идентификаторы и имена столбцов), режиссеры (id, first_name, last_name) и movies_directors (movie_id и director_id). Я хочу объединить эти 3 таблицы, поскольку они имеют одинаковые значения (director_id и movie_id), а затем конкретные столбцы проекта. То, что я сделал до сих пор:Естественное объединение 3 таблиц в mysql

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; 

Однако таблица, которая производится в конце, пуста! Я также попытался использовать представления и работает с двумя таблицами (он возвращает комбинированную таблицу), но когда дело доходит до третьего, возвращаемая таблица пуста.

ответ

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