回答

收藏

如何实现标签计数

技术问答 技术问答 482 人阅读 | 0 人回复 | 2023-09-14

我的数据库中有这样的标签:0 k5 r6 W# c( G7 @! S! o
Table: Item 3 h4 ?+ n; [5 w
Columns: ItemID, Title, Content+ x" }0 r8 C$ w- E% p3 |" P  J0 O8 x
Table: Tag
% G  S. J5 p: f8 w/ _* {; j9 sColumns: TagID, Title
  m4 o, }( O5 X7 `! q: A& S; pTable: ItemTag
) [) o) R0 z4 U7 B/ IColumns: ItemID, TagID
) E# _( m3 x* w: b- G& d
) A1 u' H% J8 |9 A0 @* J6 F( N//example -- this is the right sidebar of stackoverflow
/ a$ ~0 Z' l* W9 l3 p& ?c# 脳 592799 B& V! W* y# ?6 g+ f  \
sql 脳 14885- X: r  W6 U: t; |) C) ~
asp.net-mvc 脳 9123
8 Q5 P5 D5 ?4 b, r9 j6 Blinq 脳 4337
; J$ v0 d8 F5 h3 A2 r; itags 脳 339+ Q! N( S8 `7 w
如果我想知道每个标签的数量,例如stackoverflow如何计算他们的标签,我该怎么做?我将执行哪种查询。我对常规sql和linq都开放
- s* H* v. q5 O+ V+ z- O( j0 c) X               
( _, }# }9 U, A0 e! a3 G% E解决方案:7 v7 z' e/ v! f+ @5 K2 R( V
               
1 v& D+ i1 u8 M3 h; M1 y& Y& D  u2 d" V+ ?8 A
- {/ ], y! F8 x3 e+ c7 G
                在表格标签中添加另一列作为计数器。在项目中添加或删除标签时,您会更新计数器(换句话说,在Itemtag上添加一行时,在Tag表上增加计数器,而在删除时减少计数器)0 t# E- |: ]3 T. a: ^8 Z
将标签添加到项目:
6 F1 s, K" p; kINSERT INTO Itemtag (itemid,tagid) VALUES ('$itemid','$tagid');0 [1 Y% s  z0 X. P
UPDATE Tag SET counter=counter+1 WHERE tagid='$tagid';
! G* `2 Z# E8 s4 G0 H. e) ^9 P* @从项目中删除标签
) Q8 z3 h  l+ [% M$ C# y) A) kDELETE FROM Itemtag WHERE itemid='$itemid' AND tagid='$tagid';
8 P4 O2 A. ]7 W1 q' J2 aUPDATE Tag SET counter=counter-1 WHERE tagid='$tagid';0 }0 X8 {7 t: G6 D  X
使用计数器检索商品标签3 q1 o3 ]  P: e, ?, b4 h2 b
SELECT t.title, t.counter FROM Itemtag AS it JOIN Tag AS t ON t.idtag=it.tagid 7 P6 d' X/ P, |! v; x
WHERE it.itemid='$itemid'
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则