Так что мне нужно сделать запрос, в котором меня просят найти количество режиссеров, которые для каждой пары жанров фильмов руководили обоими.Я подумал, что должен взять два экземпляра идентификатора жанра и два экземпляра идентификатора директора и найти те, где g_id разные, но dir_id одинаковы, поэтому я попробовал что-то вроде этого
select distinct g1.genre_id as genre1,
g2.genre_id as genre2,
count(distinct mhd1.director_id) as directors_count
from genre g1, genre g2, movie_has_genre mhg1,movie_has_genre
mhg2,movie_has_director mhd1,movie_has_director mhd2
where
(g2.genre_id <> g1.genre_id) and (mhg1.genre_id = g1.genre_id)
and (mhg2.genre_id = g2.genre_id) and (mhd1.movie_id = mhg1.movie_id)
and (mhd2.movie_id = mhg2.movie_id) and (mhd1.director_id =mhd2.director_id)
group by g1.genre_id, g2.genre_id;
База равна
actor(actor_id,first_name,last_name,gender)
director(director_id,first_name,last_name)
role(movie_id,actor_id,role)
genre(genre_id,name)
movie(movie_id,title,year,rank)
movie_has_director(movie_id,director_id)
movie_has_genre(genre_id,movie_id)
но это не работает.Что мне там не хватает?Спасибо
РЕДАКТИРОВАТЬ проблема, кажется, в том, что я получаю обе (a, b) и (b, a) пары, в то время как я должен получить только (a, b) с