回答

收藏

如何实现标签计数

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

我的数据库中有这样的标签:0 N) M! n8 `; \: ?7 c9 ~
Table: Item
5 G' u2 L7 j8 [' B2 J3 t8 q: wColumns: ItemID, Title, Content3 K; X5 [! [6 c1 t: G
Table: Tag
* D& s; ~+ S' UColumns: TagID, Title1 w1 @/ W; L+ T2 f+ C8 K
Table: ItemTag . R/ _) ^% ^" ^+ C  ^
Columns: ItemID, TagID* b' l9 _* a& |5 x; d3 @2 a9 ]
( y; x' u6 ^* i
//example -- this is the right sidebar of stackoverflow
  g1 A) F: e* Y. p6 _) nc# 脳 592792 i$ |5 P2 y  V9 Y' Y
sql 脳 14885
( G, b) d  `4 E- u7 Rasp.net-mvc 脳 9123! C' L/ ]) \: Q: ^3 n5 a# _
linq 脳 4337
) d2 _+ W" S$ Gtags 脳 339
- ^5 ~% {' m, U" X! C- K5 e) g8 E! [如果我想知道每个标签的数量,例如stackoverflow如何计算他们的标签,我该怎么做?我将执行哪种查询。我对常规sql和linq都开放9 }! B8 F) q9 w# M* |0 g* V4 W8 F
               
+ \6 b0 q0 `% O# G; \4 N/ z解决方案:# d+ _" n/ a1 D/ j: f& U/ U( |6 v" M
               
  D2 r- s& V  q
* g* V, B! h0 V
( o$ K4 m& R# [# g                在表格标签中添加另一列作为计数器。在项目中添加或删除标签时,您会更新计数器(换句话说,在Itemtag上添加一行时,在Tag表上增加计数器,而在删除时减少计数器)! T: c$ L2 G( n+ q7 C' o) [
将标签添加到项目:
" n$ s( D  ?( @INSERT INTO Itemtag (itemid,tagid) VALUES ('$itemid','$tagid');
" V- G2 k9 H4 n; c, ~+ x; XUPDATE Tag SET counter=counter+1 WHERE tagid='$tagid';
% H8 i1 U" b6 A. Z从项目中删除标签
4 C7 F# F/ R$ E! T. U# ~, S" r( B' WDELETE FROM Itemtag WHERE itemid='$itemid' AND tagid='$tagid';
* W1 J) Q4 U4 m* _, hUPDATE Tag SET counter=counter-1 WHERE tagid='$tagid';
; l# N$ b0 e. j* n7 `使用计数器检索商品标签
" \$ b' _6 }# E' J# c6 ~0 m8 YSELECT t.title, t.counter FROM Itemtag AS it JOIN Tag AS t ON t.idtag=it.tagid
/ q  d% l2 b; L( C( V$ e% YWHERE it.itemid='$itemid'
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则