日期:2014-05-19  浏览次数:20604 次

两个表的超作碰到了点问题
我有两个表:一个是“用户信息表”还有一个是“论坛的主题表”
我主要是要实现用户发布的提问帖(用户会设置一定量的金币)超过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))