У меня есть три таблицы, подобные этим:
фильм: идентификатор, имя
тег: идентификатор, имя, значение
с тегами: id, фильм (FK), тег (FK)
Таким образом, у каждого фильма есть свой набор тегов. Что мне нужно, это найти похожие фильмы на основе набора тегов. Я хочу получить, скажем, 10 фильмов, отсортированных по количеству совпадающих тегов.
Если я создаю представление, как показано ниже, MySQL исчезает. Есть более 30 тыс. Записей в таблицах тегов и тегов.
create view relatedtags as
select
entityLeft.id as id,
entityRight.id as rightId,
count(rightTagged.id) as matches
from
entity as entityLeft join tagged as leftTagged on leftTagged.entity = entityLeft.id,
entity as entityRight join tagged as rightTagged on rightTagged.entity = entityRight.id
where leftTagged.tag = rightTagged.tag
and entityLeft.id != entityRight.id
group by entityLeft.id, entityRight.id