***************************
补充:
说过了,在你的积分表中增加一列等级积分上限,这个表就有用了。这样当修改你的积分表的时候,级别显示就会跟着变,就不存在写死的问题了。
***************************
你的数据库是这样,没有办法,只能用case语句一个一个找,如果你嫌麻烦,建议在【积分表】中加一个【等级积分上限】字段。
如:【2,士兵,200,499】代表积分在【200到499】之间的是【士兵】,这样sql写起来就简单多了。
select A.用户号,A.用户名,A.积分,B.等级名称 from 用户表 A,积分表 B where A.积分<=B.积分上限 and A.积分>=B.积分;
这样一下就定位了,B表只有一个字段确实不好定义。
---
以上,希望对你有所帮助。
先select 出积分字段中比208小的字段,然后再select中其他的最大值,再得出对应的等级 这个思路懂了不0.0
我提个思路 可以用“用户表”的“积分”减去“积分表”中的‘升级最小积分“。然后取出结果中大于0且最小的那个 就是该等级了
select (case when 积分>=500 then 3 when 积分>=200 then 2 else 1 end ) as 等级,姓名,积分,(case when 积分>=500 then '排长' when 积分>=200 then '士兵' else '小兵' end ) as 等级
典型的case when 问题。