Mi consulta original realiza uniones utilizando la cláusula WHERE en lugar de JOIN. Me di cuenta de que no se trataba de devolver películas que no tenían estrellas o no aparecían los géneros, así que creo que tengo que hacer una unión IZQUIERDA para mostrar cada película. Aquí está mi original de SQL:Cómo usar alias con MySQL LEFT JOIN
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;
Se ha intentado realizar un LEFT JOIN en películas definitivamente estoy haciendo algo mal.
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;
consigo ERROR 1054 (42S22): Unknown column 'sm.movie_id' in 'on clause'
tan claramente lo estoy haciendo la unión mal, yo no veo lo que es.
Gaaaah. Mezclar el perezoso 'FROM table, table, table' con uniones apropiadas y completamente especificadas es ultra-feo. –