首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

两个表的超作碰到了点有关问题

2012-02-07 
两个表的超作碰到了点问题我有两个表:一个是“用户信息表”还有一个是“论坛的主题表”我主要是要实现用户发布

两个表的超作碰到了点问题
我有两个表:一个是“用户信息表”还有一个是“论坛的主题表”
我主要是要实现用户发布的提问帖(用户会设置一定量的金币)超过15天还没解决(即金币还没给予任何人,可能出现故意不给分的情况)问题的用户自动扣除2倍金币。

例如用户表有以下字段:
id
bbsmoney       (金币数)

主题表如下:
id
rewardprice     (提问时设置的金币)
rewardok           (是否解决,如果是1表示已经解决问题,并且已给分)

我用以下语句可以选择出符合上面情况的主题表记录
SELECT   id,   rewardprice,   userid   FROM   bbs   WHERE   (rewardprice   >   0)   AND   (rewardok   =   0)   AND   (intertime   >   CONVERT(char(10),   GETDATE()   -   15,   120))

不知道怎么对member表进行扣分处理(一个用户可能提了好几个问题,有可能一次处理中一个用户会有好几条符合惩罚的记录)

备注:对member表的扣分是rewardprice*2



[解决办法]
update a
set bbsmoney=a.bbsmoney-t.k
from member a,(
SELECT userid,sum(rewardprice*2) as k
FROM bbs WHERE (rewardprice > 0) AND (rewardok = 0) AND (intertime > CONVERT(char(10), GETDATE() - 15, 120))
group by userid
) as t
where a.id=t.userid


[解决办法]
update a set bbsmoney= a.bbsmoney - 2 * (select sum(b.rewardprice) from bbs b where
a.id=b.id and (rewardprice > 0) AND (rewardok = 0) AND (intertime >
CONVERT(char(10), GETDATE() - 15, 120))

热点排行