我正在创建一个简单的电影数据库,其中我有三个表:
电影
with movie_id,movie_name,movie_year
类型
使用genre_id,genre_name
movie_genre(用于多对多关联)
与idgenre,idmovie
我在电影和流派之间建立了关联:
Movie id Genre id
1 1
1 2
2 4
2 1
因此,电影可以有更多类型。现在,在single.php页面中,我检索电影ID并打印有关此电影的信息,我还想只打印至少匹配两种类型的电影,如:
电影ID = 1 ==> (例如泰坦尼克号,类型:戏剧,浪漫,冒险)
现在php脚本应该打印所有匹配至少2种类型的电影,所以如果有一部电影有流派:剧情,冒险应该打印......
有人可以帮我这么做吗?什么应该是PHP查询? 提前致谢:D
答案 0 :(得分:2)
SELECT
movie_id, movie_name, movie_year, GROUP_CONCAT(DISTINCT genre.genre_name)
FROM movies
JOIN movie_genre
ON movie_genre.idmovie = movies.movie_id
JOIN genre
ON genre.genre_id = movie_genre.idgenre
AND genre.genre_name IN ('Drama','Adventure')
GROUP BY movie_id
HAVING COUNT(DISTINCT movie_genre.idgenre) >= 2;