@lolka02

Как сделать выборку похожих записей по всем тегам?

Вобщем есть таблицы posts, tags, post_tag (post_id, tag_id)

например
у записи post id=1 теги tag_id =2, tag_id=3, tag_id =5
как выбрать похожие записи в которых есть все эти 3 тега, чтоб точное совпадение было
  • Вопрос задан
  • 44 просмотра
Пригласить эксперта
Ответы на вопрос 1
twobomb
@twobomb
Поменяйте тройки на количество тегов в IN, ну и ид тегов в IN на нужные
SELECT p.* FROM posts as p
WHERE (SELECT COUNT(*) FROM tags as t LEFT JOIN post_tag as pt ON pt.tag_id = t.id WHERE pt.post_id = p.id) = 3
AND
(SELECT COUNT(*) FROM tags as t LEFT JOIN post_tag as pt ON pt.tag_id = t.id WHERE pt.post_id = p.id AND t.id IN (1,2,3) ) = 3
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы