Получить наиболее популярные теги из нормализованных таблиц MySQL

Я создаю свою собственную систему тегов для форума, который я создаю. Все работает отлично, но я пытаюсь отобразить список самых популярных тегов, но не могу найти, какой запрос использовать ..

Мои таблицы выглядят так:

Мне нужен список из 20 самых популярных тегов, поэтому tag_names из которых tag_id появляются чаще всего в таблице article_tag_xref. Кто-нибудь, кто знает, как должен выглядеть запрос? Спасибо!

2

Решение

Вы можете использовать следующий запрос:

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 ценности.

4

Другие решения

Следующее должно сработать для вас, так как вы спрашивали только о 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 и их количество.

0

По вопросам рекламы [email protected]