У меня есть таблицы под названием Movie, Genre and Keyword, из которых я создал представление под названием «genkeyword». Представление 'genkeyword' имеет множество кортежей, поэтому к нему можно обратиться по адресу DB Fiddle .
У меня есть следующий запрос:
SELECT title,
year,
Count(DISTINCT genre) AS genre_freq,
Count(DISTINCT keyword) AS keyword_freq
FROM genkeyword
WHERE ( genre IN (SELECT genre
FROM genkeyword
WHERE title = 'Harry Potter and the Deathly Hallows')
OR keyword IN (SELECT keyword
FROM genkeyword
WHERE title = 'Harry Potter and the Deathly Hallows') )
AND title <> 'Harry Potter and the Deathly Hallows'
GROUP BY title,
year
ORDER BY genre_freq DESC,
keyword_freq DESC;
Что я собираюсь сделать с этим запросом, так это получить жанр и частоту ключевых слов для каждого фильма, в котором есть жанры и ключевые слова, общие с Гарри Поттером:
Выход должен быть:
title | genre_freq | keyword_freq
Cinderella 2 2
The Shape of Water 2 1
How to Train Your Dragon 2 0
Enchanted 1 3
Я знаю, что запрос неверен, поскольку вместо этого я получаю следующий вывод:
title | genre_freq | keyword_freq
The Shape of Water 4 3
Enchanted 3 4
Cinderella 2 5
How to Train Your Dragon 2 3
Однако я хотел бы уточнить мое понимание того, как работает запрос.
В предложении 'where' моего запроса:
where (genre in (select genre from genkeyword where title='Harry Potter') or
keyword in (select keyword from genkeyword where title='Harry Potter'))
Прав ли я, говоря, что сгенерированы два набора результатов, один из которых содержит все кортежи жанра Гарри Поттера (пусть это будет R1), а другой - все кортежи с ключевым словом в Гарри Поттер (пусть это будет R2)?
Если рассматриваемый кортеж содержит жанр из результирующего набора жанров R1 или ключевое слово из результирующего набора ключевых слов R2, то учитывается жанр / ключевое слово. Я не уверен, как count (отличный жанр) и count (другое ключевое слово) работает в этом случае. Если кортеж содержит жанр из R1, учитывается ли только жанр или ключевое слово? То же самое для случая, когда кортеж содержит ключевое слово в R2, учитывается ли жанр и ключевое слово?
Я не понимаю, почему я неправильно получаю значения genre_freq и keyword_freq из моего запроса. Это потому, что я не до конца понимаю, как жанр и частоты ключевых слов учитываются за кадром. Любые идеи приветствуются.