我有一个输入框,用户可以在提问时输入标签。它们用逗号分隔,如下所示:
test1, test2, test3, test4
我的questions
表结构是:
要显示问题的标记,我只使用explode(",", $qinfo['tags'])
,然后使用foreach
循环。
但是,我不知道如何在单独的“热门标签”页面上显示从最受欢迎到最不受欢迎的标签。
感谢您的帮助!
答案 0 :(得分:4)
您应该将标签分别放入其他表格中(不要用逗号分隔)。
答案 1 :(得分:2)
您应该创建tags
和questions_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
表中。用它来缓存。例如:如果您要显示单个问题,则无需查询tags
和questions_tags
表。