回答

收藏

如何实现标签计数

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

我的数据库中有这样的标签:
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'
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则