2014-11-06 48 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