Sma*_*boy 11 sql t-sql sql-server sql-server-2008
我的数据库中有两个表
优惠券表
优惠券表
每当用户点击优惠券时,条目就会进入CouponUse包含该优惠券ID 的表格
现在表中有一列coupon叫做NoofUses.我想在存储过程中写一个游标,它循环遍历couponuse表,并查看一个优惠券有多少行,并NoofUses在优惠券的字段中填写该数字.
我有这个问题
select COUNT(*) as totalcount , Name as name from Coupon as coupon
join CouponUse as couponuse on coupon.id = couponuse.couponid
group by couponuse.couponid , coupon.Name
Run Code Online (Sandbox Code Playgroud)
它给了我优惠券名称和它的数量 couponuse
但我不知道如何使用游标在存储过程中实现它?
任何你问的问题将不胜感激,谢谢
Gow*_*008 13
请尝试以下代码段.您可以从应用程序中调用以下存储过程,以便NoOfUses在优惠券表中更新.
CREATE PROCEDURE [dbo].[sp_UpdateCouponCount]
AS
Declare @couponCount int,
@CouponName nvarchar(50),
@couponIdFromQuery int
Declare curP cursor For
select COUNT(*) as totalcount , Name as name,couponuse.couponid as couponid from Coupon as coupon
join CouponUse as couponuse on coupon.id = couponuse.couponid
where couponuse.id=@cuponId
group by couponuse.couponid , coupon.Name
OPEN curP
Fetch Next From curP Into @couponCount, @CouponName,@couponIdFromQuery
While @@Fetch_Status = 0 Begin
print @couponCount
print @CouponName
update Coupon SET NoofUses=@couponCount
where couponuse.id=@couponIdFromQuery
Fetch Next From curP Into @couponCount, @CouponName,@couponIdFromQuery
End -- End of Fetch
Close curP
Deallocate curP
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
mar*_*c_s 12
简单地使用一个简单的UPDATE陈述有什么问题?
UPDATE dbo.Coupon
SET NoofUses = (SELECT COUNT(*) FROM dbo.CouponUse WHERE Couponid = dbo.Coupon.ID)
Run Code Online (Sandbox Code Playgroud)
这就是所需要的!没有杂乱和复杂的游标,没有循环,没有RBAR(逐行激动行)处理.....只是一个漂亮,简单,干净的基于集合的SQL语句.
| 归档时间: |
|
| 查看次数: |
106431 次 |
| 最近记录: |