在遵循关于标签表结构的this建议之后,我实现了以下设计:
Table: Item
Columns: ItemID, Title, Content
Table: Tag
Columns: TagID, Title
Table: ItemTag
Columns: ItemID, TagID
我正面临另一个问题,我想显示每个标签出现在系统中的数字。在搜索查询/ php代码方面做到这一点的最佳方法是什么,不会对性能产生严重影响(每个项目都会显示标签数量)。
谢谢,
罗伊
答案 0 :(得分:2)
select count(*) from ItemTag where TagId = X
是mySQL,它将动态获取它。
如果您担心性能下降,则应在标记表中存储计数,并在标记或取消标记项目时递增/递减计数。
答案 1 :(得分:2)
非常确定以下内容(SQL)将获取所有标记标题以及它们在项目上出现频率的相关计数。
select tag.title, count(itemtag.tagid)
from tag, itemtag
where itemtag.tagid = tag.tagid
group by tag.title
答案 2 :(得分:1)
SELECT Tag.Title, COUNT(Tag.TagID) AS TagCount
FROM ItemTag
LEFT JOIN Tag ON
(ItemTag.TagID = Tag.TagID)
GROUP BY Tag.Title
ORDER BY Tag.Title
为您提供一个标签列表(按字母顺序排列),然后是对项目使用的次数。未使用的标签不会出现。