La mia query originale sta eseguendo join utilizzando la clausola WHERE anziché JOIN. Mi sono reso conto che non si trattava di restituire film che non presentavano stelle o generi, quindi penso di dover fare un SINISTRA SINISTRA per mostrare ogni film. Ecco il mio SQL originale:Come utilizzare gli 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;
Ho provato a fare un SINISTRA SINISTRO sui film Sto sicuramente facendo qualcosa di sbagliato.
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;
ho ERROR 1054 (42S22): Unknown column 'sm.movie_id' in 'on clause'
così chiaramente io sto facendo il join sbagliato, io non vedo quello che è.
Gaaaah. Mescolare il pigro 'DA tavolo, tavolo, tavolo' con giunzioni correttamente specificate è ultra-brutto. –