Если вам нужен только заголовок фильма, ниже должны быть предложены лучшие характеристики.Кажется, что нет необходимости в объединениях в операторе select, и, конечно, нет необходимости оставлять их в внешних соединениях.
SELECT Title
FROM Film
WHERE FilmID IN (SELECT FilmID FROM FilmGenre WHERE Genre IN ('Comedy', 'Horror'))
или в некоторых объединениях СУБД более эффективны, чем подзапросы в выражениях where (*)1004 * Подробнее ... )
SELECT Film.Title
FROM Film
INNER JOIN
( SELECT FilmID
FROM FilmGenre
WHERE Genre IN ('Comedy', 'Horror')
GROUP BY FilmID
) g
ON g.FileID = Film.FilmID
РЕДАКТИРОВАТЬ:
Если требуются фильмы ТОЛЬКО комедия и ужасы, то вам понадобится что-то вроде:
SELECT Film.Title
FROM Film
INNER JOIN
( SELECT FilmID
FROM FilmGenre
GROUP BY FilmID
HAVING COUNT(DISTINCT CASE WHEN Genre IN ('Comedy', 'Horror') THEN Genre END) = 2
AND COUNT(DISTINCT Genre) = 2
) g
ON g.FileID = Film.FilmID
Та же логика по-прежнему применяется для перемещения подзапроса в предложение IN в зависимости от СУБД для оптимизации.