Truy vấn ban đầu của tôi đang thực hiện các phép nối bằng mệnh đề WHERE thay vì JOIN. Tôi nhận ra rằng đây không phải là những bộ phim không có bất kỳ ngôi sao hay thể loại nào không xuất hiện nên tôi nghĩ tôi phải làm một LEFT JOIN để thể hiện mọi bộ phim. Đây là SQL gốc của tôi:Cách sử dụng bí danh với 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;
Tôi đã cố gắng thực hiện LEFT JOIN trên phim. Tôi chắc chắn đang làm điều gì đó sai.
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;
Tôi nhận được ERROR 1054 (42S22): Unknown column 'sm.movie_id' in 'on clause'
vì vậy rõ ràng tôi đang tham gia sai, tôi không thấy nó là gì.
Gaaaah. Trộn bảng 'FROM, bảng, bảng' lười biếng với các tham gia được chỉ định đầy đủ thích hợp là cực kỳ xấu xí. –