显示与标签相关的项目数量的最佳方法是什么?

时间:2009-01-29 15:44:42

标签: php mysql

在遵循关于标签表结构的this建议之后,我实现了以下设计:

Table: Item
Columns: ItemID, Title, Content

Table: Tag
Columns: TagID, Title

Table: ItemTag
Columns: ItemID, TagID

我正面临另一个问题,我想显示每个标签出现在系统中的数字。在搜索查询/ php代码方面做到这一点的最佳方法是什么,不会对性能产生严重影响(每个项目都会显示标签数量)。

谢谢,

罗伊

3 个答案:

答案 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

为您提供一个标签列表(按字母顺序排列),然后是对项目使用的次数。未使用的标签不会出现。

相关问题