Нужна помощь с sql-запросом, чтобы найти вещи с большинством указанных тегов

Скажем, у меня есть следующие таблицы:

TAGS

id: integer
имя: строка

ПОСТЫ

id: integer
основной текст

-осна-

id: integer
tag_id: integer
post_id: integer

Как я могу написать запрос, который выбирает все сообщения в порядке сообщения, содержащего наибольшее количество следующих тегов (атрибут атрибута таблицы тэгов): «Сыр», «Вино», «Париж», «Фрейс», City "," Scenic "," Art "

См. Также: нужна помощь с запросом sql, чтобы найти вещи, помеченные всеми указанными тегами (примечание: похоже, но не дубликат!)

В отличие от вашего связанного вопроса, вы не указали здесь, что вам нужно соответствовать всем тегам. Этот запрос работает для ЛЮБОГО.

SELECT p.id, p.text, count(tg.id) as TagCount FROM Posts p INNER JOIN Taggings tg ON p.id = tg.post_id INNER JOIN Tags t ON tg.tag_id = t.id WHERE t.name in ('Cheese', 'Wine', 'Paris', 'Frace', 'City', 'Scenic', 'Art') GROUP BY p.id, p.text ORDER BY TagCount DESC 

Попробуй это:

  Select p.Id, p.Text, Count(*) From Posts p Left Join (Taggings tg Join Tags t On t.Tag_Id = tg.Tag_Id And t.name in ('Cheese', 'Wine', 'Paris', 'Frace', 'City', 'Scenic', 'Art')) On tg.Post_Id = p.Post_Id Group By p.Id, p.text Order By Count(*) Desc