Использование:
SELECT m.id,
m.name
FROM MOVIE m
JOIN MOVIE_GENRE mg ON mg.fk_movieid = m.id
AND mg.fk_genreid IN (1, 3)
GROUP BY m.id, m.name
HAVING COUNT(DISTINCT mg.fk_genreid) = 2
Последняя строка является ключом для получения строк из обоих жанров - DISTINCT означает, что дублированные ассоциации (IE: два экземпляра жанра 1) будут игнорироваться, поскольку они являются ложноположительными. Но количество должно соответствовать количеству жанров, которые вы ищете.
Но COUNT(DISINCT
не поддерживается всеми базами данных. Вы должны указать, что вы используете - если не по тегу, то в вопросе ... Если первичным ключом для таблицы MOVIE_GENRE
является fk_movieid
и fk_genreid
, то это не вопрос. Следующим лучшим вариантом будет то, что оба столбца находятся в уникальном ограничении / индексе ...