Я создаю простую базу данных фильмов, где у меня есть три таблицы:
кино
с 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, где я получаю идентификатор фильма и печатаю информацию об этом фильме, я также хочу печатать только фильмы, которые соответствуют как минимум двум жанрам, например:
Идентификатор фильма = 1 ==> (напр. Титаник, Жанры: Драма, Романтика, Приключения)
Теперь скрипт php должен печатать все фильмы, которые соответствуют как минимум двум жанрам, поэтому, если есть фильм с жанрами: драма, приключения, его следует распечатать …
Может ли кто-нибудь помочь мне в этом? Каким должен быть php-запрос?
Заранее спасибо
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;
Других решений пока нет …