Как использовать псевдонимы с MySQL LEFT JOIN

Мой исходный запрос выполняет объединение с помощью предложения WHERE, а не JOIN. Я понял, что это не возвращает фильмы, в которых нет звезд или жанры не отображаются, поэтому я думаю, что мне нужно сделать LEFT JOIN, чтобы показать каждый фильм. Вот мой исходный SQL:

SELECT *
FROM movies m, stars s, stars_in_movies sm, genres g, genres_in_movies gm
WHERE m.id = sm.movie_id
AND sm.star_id = s.id
AND gm.genre_id = g.id
AND gm.movie_id = m.id
AND m.title LIKE '%the%'
AND s.first_name LIKE '%Ben%'
ORDER BY m.title ASC
LIMIT 5;

Я попытался сделать LEFT JOIN для фильмов, я определенно делаю что-то не так.

SELECT *
FROM movies m, stars s, stars_in_movies sm, genres g, genres_in_movies gm
LEFT JOIN movies m1 ON m1.id = sm.movie_id
LEFT JOIN movies m2 ON m2.id = gm.movie_id
AND sm.star_id = s.id
AND gm.genre_id = g.id
ORDER BY m.title ASC
LIMIT 5;

Я получаю ERROR 1054 (42S22): Unknown column 'sm.movie_id' in 'on clause', так что очевидно, что я делаю соединение неправильно, я просто не понимаю, в чем дело.

22
задан styfle 15 October 2011 в 21:53
поделиться