Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como obter as tags mais populares gerais das tabelas normalizadas?


Você pode fazer uma modificação simples em sua consulta:
SELECT t.id, t.tag, COUNT(*) AS cnt
FROM tags_xref xrf INNER JOIN
     tags t
     ON xrf.tag_id = t.id
GROUP BY t.id, t.tag
ORDER BY COUNT(*) DESC
LIMIT 20;

Presumivelmente, os vários ids são NULL quando não são apropriados. Se, por algum motivo estranho, você realmente armazenou valores em todos os três ids para uma determinada refex, você pode fazer:
SELECT t.id, t.tag,
       (COUNT(story_id) + COUNT(discussion_id) + COUNT(article_id) ) AS cnt
FROM tags_xref xrf INNER JOIN
     tags t
     ON xrf.tag_id = t.id
GROUP BY t.id, t.tag
ORDER BY cnt DESC
LIMIT 20;