我的数据库中有这样的标签: 0 D! J' d2 ?- a9 E( PTable: Item 5 X% J8 x' f D p0 H, J6 L
Columns: ItemID, Title, Content , A: }5 [: d! LTable: Tag ( t. S% m8 w& @
Columns: TagID, Title |; w8 c! X/ w5 I9 N5 Q; e# f) A4 ?Table: ItemTag 1 e. |2 p& {2 \
Columns: ItemID, TagID# M; l* `1 ~/ |; P* L
: L/ J5 b( k# G9 G; k! J9 g# N+ G//example -- this is the right sidebar of stackoverflow) _) h, w: R2 \, l
c# 脳 59279 , Q _* N3 m: x+ |9 M2 msql 脳 148853 N& C' _" ^, \1 E9 } I* M
asp.net-mvc 脳 91234 h" b. \- m3 {: K
linq 脳 43375 q8 A$ W, B6 S# H2 ~4 C8 t# k
tags 脳 339 % x1 L! c$ x7 Z! Q如果我想知道每个标签的数量,例如stackoverflow如何计算他们的标签,我该怎么做?我将执行哪种查询。我对常规sql和linq都开放 + P1 j6 A7 Z3 k7 N 0 o6 x+ e1 m7 {解决方案:& z. h4 Z% ~/ f+ n( y
) z! l7 a8 ~1 J6 S! V) y 4 H) P- H2 S9 ]6 y 6 Z6 Q7 o. E* _4 ]+ ^! @9 u 在表格标签中添加另一列作为计数器。在项目中添加或删除标签时,您会更新计数器(换句话说,在Itemtag上添加一行时,在Tag表上增加计数器,而在删除时减少计数器) x6 L0 T1 |. q l# ~# _: g. E
将标签添加到项目: * j( z$ d! {5 }$ m: c# BINSERT INTO Itemtag (itemid,tagid) VALUES ('$itemid','$tagid'); / ^6 o' k: V" V9 P6 f$ a: AUPDATE Tag SET counter=counter+1 WHERE tagid='$tagid'; " d6 ^) [: }& B从项目中删除标签 # }8 ^ r% ]' u9 U' D6 q; ~DELETE FROM Itemtag WHERE itemid='$itemid' AND tagid='$tagid';8 k3 M2 S+ m/ N# R- u
UPDATE Tag SET counter=counter-1 WHERE tagid='$tagid'; ( l: v) y/ m) }2 G. @使用计数器检索商品标签8 p& H% z: n( o8 L
SELECT t.title, t.counter FROM Itemtag AS it JOIN Tag AS t ON t.idtag=it.tagid 5 ^4 ~" Z3 x, W; r0 ?
WHERE it.itemid='$itemid'