Mysql
 sql >> Database >  >> RDS >> Mysql

Come ottenere i tag più popolari in generale dalle tabelle normalizzate?

Puoi apportare una semplice modifica alla tua richiesta:

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;

Presumibilmente, i vari ID sono NULL quando non sono appropriati. Se, per qualche strano motivo, hai effettivamente memorizzato valori in tutti e tre gli ID per un determinato xrif, puoi fare:

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;