如何显示“最受欢迎”的标签

时间:2012-05-26 17:04:36

标签: php mysql tags

我有一个输入框,用户可以在提问时输入标签。它们用逗号分隔,如下所示:

test1, test2, test3, test4

我的questions表结构是:

enter image description here

要显示问题的标记,我只使用explode(",", $qinfo['tags']),然后使用foreach循环。

但是,我不知道如何在单独的“热门标签”页面上显示从最受欢迎到最不受欢迎的标签。

感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

您应该将标签分别放入其他表格中(不要用逗号分隔)。

答案 1 :(得分:2)

您应该创建tagsquestions_tags表。

tags
----
id
name

questions_tags
-------------
id
question_id
tag_id

获取按人气排序的标签:

SELECT t.id, t.name, COUNT(qt.id) AS total
FROM tags t
LEFT JOIN questions_tags qt ON t.id=qt.tag_id
GROUP BY t.id, t.name
ORDER BY total DESC

但我建议您将tags字段保留在questions表中。用它来缓存。例如:如果您要显示单个问题,则无需查询tagsquestions_tags表。