Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie erhält man die insgesamt beliebtesten Tags aus normalisierten Tabellen?

Sie können eine einfache Änderung an Ihrer Abfrage vornehmen:

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;

Vermutlich sind die verschiedenen IDs NULL wenn sie nicht angemessen sind. Wenn Sie aus irgendeinem seltsamen Grund tatsächlich Werte in allen drei IDs für eine bestimmte XRef gespeichert haben, können Sie Folgendes tun:

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;