Я создаю свою собственную систему тегов для форума, который я создаю. Все работает отлично, но я пытаюсь отобразить список самых популярных тегов, но не могу найти, какой запрос использовать ..
Мои таблицы выглядят так:
Мне нужен список из 20 самых популярных тегов, поэтому tag_names из которых tag_id появляются чаще всего в таблице article_tag_xref. Кто-нибудь, кто знает, как должен выглядеть запрос? Спасибо!
Вы можете использовать следующий запрос:
SELECT t.tag_id, t.tag_name, COUNT(article_id) AS cnt
FROM Article_Tag_Xref AS a
INNER JOIN Tag AS t ON a.tag_id = t.tag_id
GROUP BY t.tag_id, t.tag_name
ORDER BY COUNT(article_id) DESC LIMIT 20
COUNT(article_id)
возвращает количество появлений каждого tag_ig
в Article_Tag_Xref
Таблица. Таким образом, порядок по этому количеству в порядке убывания и применения LIMIT 20
возвращает 20 самых популярных tag_ig
ценности.
Следующее должно сработать для вас, так как вы спрашивали только о tag_names без их количества.
SELECT tag_name
FROM Tag
WHERE tag_id IN ( SELECT tag_id, COUNT(article_id)
FROM Article_Tag_Xref
GROUP BY tag_id
ORDER BY COUNT(article_id) DESC
LIMIT 20)
Подзапрос возвращает 20 лучших tag_ids
и их количество.