我最初的查詢是使用WHERE子句而不是JOIN進行連接。我意識到,這並不是因爲沒有任何明星或類型的電影沒有出現,所以我想我必須做一個左連接才能顯示每部電影。這是我的原始SQL:如何使用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;
我試圖做一個左電影加入我肯定是做錯了什麼。
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'
這麼清楚我做的是加入錯誤的,我只是不明白它是什麼。
Gaaaah。將懶惰的'FROM table,table,table'與適當的完全指定的連接混合在一起是非常難看的。 –