如何实现标签计数

我在我的数据库中设置了这样的标签:

Table: Item Columns: ItemID, Title, Content Table: Tag Columns: TagID, Title Table: ItemTag Columns: ItemID, TagID //example -- this is the right sidebar of stackoverflow c# × 59279 sql × 14885 asp.net-mvc × 9123 linq × 4337 tags × 339 

如果我想知道每个标签的数量,例如stackoverflow如何计算其标签,我该怎么做? 我会执行什么样的查询。 我对常规sql和linq都开放

在表格Tag中添加另一列作为计数器。 当您从项目中添加或删除标记时,您更新计数器(换句话说,当在Itemtag上添加一行时,在Tag表上增加计数器,当删除减少计数器时)

将标签添加到项目:

 INSERT INTO Itemtag (itemid,tagid) VALUES ('$itemid','$tagid'); UPDATE Tag SET counter=counter+1 WHERE tagid='$tagid'; 

从项目中删除标记

 DELETE FROM Itemtag WHERE itemid='$itemid' AND tagid='$tagid'; UPDATE Tag SET counter=counter-1 WHERE tagid='$tagid'; 

用计数器检索项目标签

 SELECT t.title, t.counter FROM Itemtag AS it JOIN Tag AS t ON t.idtag=it.tagid WHERE it.itemid='$itemid' 
 select t.Title, count(it.TagID) as TagCount from Tag t inner join ItemTag it on t.TagID = it.TagID inner join Item i on it.ItemID = i.ItemID where i.ItemID = @currentItemID -- optional, if you only want current page group by t.Title 

您可以使用Item另一列来存储标记计数,并在添加或删除标记时对其进行同步。

 SELECT title, count(*) FROM tag JOIN itemtag ON itemtag.tagid = tag.tagid GROUP BY title