本帖最后由 huangwenquan123 于 2011-03-22 22:30:22 编辑

解决方案 »

  1.   

    用户的多的话。还是用定时任务来做每天夜里悄悄地 遍历用户ID 取出积分和上下线 一个个进行更新等级。比如CSDN 就是每天4点更新整站用户数据。。
      

  2.   

    这个问题可以用后台的windowsservice服务处理,业务逻辑很清晰,只需要判断用户积分,表全有的,只需要一个后台服务一天跑2次(中午晚上),统计积分,符合条件的就更新等级表
      

  3.   

    查询的时候 直接 case when then 不就可以了吗 ~
      

  4.   


    go
    --创建用户表
    create table 用户表(id int identity,username varchar(6),userstate varchar(20))
    insert into 用户表(username,userstate)
    select '张三','银牌代理商' union all
    select '李四','银牌代理商' union all
    select '王五','银牌代理商'go
    --创建消费表
    create table 消费表(id int identity,消费金额 int,消费用户id int)
    insert into 消费表
    select 499,1 union all
    select 200,2 union all
    select 200,3 union all
    select 500,2go
    --创建添加消费的存储过程
    alter proc addfy(@userid int,@fvalue float)
    as
    begin
        --插入数据
    insert into 消费表 select @fvalue,@userid
        --判断是不是银牌代理商
    if((select userstate from 用户表 where id=1)='银牌代理商')
    begin
        --得到消费总额
    declare @i float
    select @i=sum(@fvalue) from 消费表 where 消费用户id=@userid
    --判断是否可以升级了
        if @i>1000
    update 用户表 set userstate='金牌代理商' where id=@userid
    end
    endgo
    --1号消费300
    exec addfy 1,300
    --查看未升级
    select * from 用户表
    /*
    id          username userstate
    ----------- -------- --------------------
    1           张三       银牌代理商
    2           李四       银牌代理商
    3           王五       银牌代理商
    */
    --1号再消费300
    exec addfy 1,300
    --查看已升级
    select * from 用户表
    /*
    id          username userstate
    ----------- -------- --------------------
    1           张三       金牌代理商
    2           李四       银牌代理商
    3           王五       银牌代理商
    */
      

  5.   

    这个问题完全可以简化得很容易吧。直接把消费分数档位作为等级换算,无论你显示不显示用户等级,比如用户积分很少,一个牌都混不上,相当于没有等级,你不也得显示分数吗,所以取分数是必然的。根据你的积分等级制度(可以写在一个配置里,或直接在程序里设置),if(积分>1000){等级="金牌";} else if(积分>500){等级="银牌";} else if(积分>100){等级="铜牌";} else {等级="没牌";}
      

  6.   

    if(积分>999){等级="金牌";} else if(积分>499){等级="银牌";} else if(积分>99){等级="铜牌";} else {等级="没牌";}
      

  7.   

    theforever的方法也不是不可以,记录总积分就可以了,完成了消费更新积分是正常操作吧,以后读出来积分按照规则办事这简化了很多