从mysql规范化表中获取最流行的标签

时间:2016-02-21 20:52:24

标签: php mysql tagging

我正在为我正在制作的论坛构建自己的标签系统。一切都很完美,但我试图回应一个最流行的标签列表,但我找不到使用哪个查询..

我的表格如下:

我需要20个最受欢迎的标签列表,因此tag_id在article_tag_xref表中最常出现的tag_names。有谁知道查询应该是什么样的人?谢谢!

2 个答案:

答案 0 :(得分:4)

您可以使用以下查询:

else

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会返回20个最受欢迎的LIMIT 20值。

答案 1 :(得分:0)

以下内容应该适合您,因为您只询问了没有计数的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及其计数。