sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo obtener las etiquetas más populares en general de las tablas normalizadas?

Puede hacer una modificación simple a su 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;

Presumiblemente, las diversas identificaciones son NULL cuando no son apropiados. Si, por alguna extraña razón, almacenó valores en los tres ID para una referencia externa dada, puede hacer lo siguiente:

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;