2014-11-06 15 views
0

我创建一个简单的电影数据库,在那里我有三个表:PHP比赛至少有两个流派(MySQL的)

电影

与movie_id,MOVIE_NAME,movie_year


类型

genre_i d,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

把另一个查询的WHERE子句中,即WHERE(SELECT COUNT(*)...)> 1 – 2014-11-06 16:55:12

回答

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; 
+0

非常感谢你,我是使用JOIN和算过,但不以同样的方式,这个工程,现在我明白如何使用连接... 再次感谢你:D – user3224356 2014-11-06 17:40:23