SQL批量更新及 更新后依据更新数据内容插入到另一张表的存储过程
SQL批量更新及 更新后根据更新数据内容插入到另一张表的存储过程
问题表
id 会员ID 状态 分值 发布时间
1 3 1 10 2015-1-10 12:11:22
2 2 3 20 2015-1-19 12:11:22
3 1 2 15 2015-1-10 15:11:22
4 6 3 16 2015-1-5 12:11:22
6 7 3 20 2015-1-8 19:11:22
..................
会员表
ID 用户名 密码 帐户分值
1 # # 10
2 # # 15
3 # # 10
...................
记录表
ID UID 分数 时间
1 1 10 2015-1-10
....................
我想实现这样的存储过程。
批量更新 问题表 状态值为3且时间超过10天记录。更新状态为4,
同时获取问题表的分值,如果分值大于0,根据问题表的关联会员ID,更新会员表的分数,使其增加
然后再插入一条记录。到记录表里。记录什么时间会员ID增加了多少分数
总的功能就相当于一个问题回答系统,会员发布一个问题。如果有人回复他了,而他10天内进行操作。系统自动将他的问题状态改为已处理完毕。也就是着问题表中的状态4
在系统自动更新为已处理完毕的时候。那会给发布问题的人的帐户上加这个问题的分数,且同时记录一条他获取分数和记录。存在记录这个表里。
不知道我说的是否明了……请大神帮忙
------解决思路----------------------
问题表
id 会员ID 状态 分值 发布时间
1 3 1 10 2015-1-10 12:11:22
2 2 3 20 2015-1-19 12:11:22
3 1 2 15 2015-1-10 15:11:22
4 6 3 16 2015-1-5 12:11:22
6 7 3 20 2015-1-8 19:11:22
..................
会员表
ID 用户名 密码 帐户分值
1 # # 10
2 # # 15
3 # # 10
...................
记录表
ID UID 分数 时间
1 1 10 2015-1-10
....................
我想实现这样的存储过程。
批量更新 问题表 状态值为3且时间超过10天记录。更新状态为4,
同时获取问题表的分值,如果分值大于0,根据问题表的关联会员ID,更新会员表的分数,使其增加
然后再插入一条记录。到记录表里。记录什么时间会员ID增加了多少分数
总的功能就相当于一个问题回答系统,会员发布一个问题。如果有人回复他了,而他10天内进行操作。系统自动将他的问题状态改为已处理完毕。也就是着问题表中的状态4
在系统自动更新为已处理完毕的时候。那会给发布问题的人的帐户上加这个问题的分数,且同时记录一条他获取分数和记录。存在记录这个表里。
不知道我说的是否明了……请大神帮忙
------解决思路----------------------
UPDATE 会员表
SET 帐户分值 = 帐户分值 + t.分值
FROM 会员表,
(
SELECT 会员ID, SUM(分值) 分值
FROM 问题表
WHERE DateDiff(day,发布时间,GetDate())>10
AND 状态 = 3
GROUP BY 会员ID
) t
WHERE 会员表.ID = t.会员ID
INSERT INTO 记录表 (UID,分数,时间)
SELECT 会员ID,分值,GetDate()
FROM (
SELECT 会员ID, SUM(分值) 分值
FROM 问题表
WHERE DateDiff(day,发布时间,GetDate())>10
AND 状态 = 3
GROUP BY 会员ID
) t
UPDATE 问题表
SET 状态 = 4
WHERE DateDiff(day,发布时间,GetDate())>10
AND 状态 = 3