84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
会员卡管理系统里的会员级别表设计问题
普通会员 积分要求0-10000金牌会员 积分要求100001-30000白金会员 积分要求30000-无限
id name(会员级别名称) pointsA(最低积分) points(最高积分)???
这样两个字段写好不好?
无限用-1来区分?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
提供一个想法:有一个字段叫 level,int类型,区分等级。不需要最高积分了,触发到某一个等级最低积分,就到这等级了。保存数据时,得保证高等级的最低积分不能比低等级的最低积分 更低。
我觉得你这么设计可以.当获取一个用户信息的时候, select 用户表.*, 积分表.level from 用户表 left join 积分表 on 用户表.积分 between 积分表.lower and 积分表.higher
select 用户表.*, 积分表.level from 用户表 left join 积分表 on 用户表.积分 between 积分表.lower and 积分表.higher
从你问题描述和评论内容来看可以这样定义用户会员等级定义表格表名:vip_level表结构:id, vl_name, vl_achieve_score(decimal(n,2)), vl_discount(decimal(n,2))
为什么这样创建?比如一个用户他的会员积分是50分,通过积分到vip_level表中依据vl_achieve_score降序排列获取第一条数据就可以了
另外,如果按照你的创建表结构的思路@vsion的查询会报错
between 积分表.lower and 积分表.higher
在白金会员30000 ~ -1怎么整?
@柳公子
问题一、如图 我按照您说的设计的数据表 并定义了三个会员级别,用下面的Sql语句才能正确找到100这个积分所属的级别;您说的升序,我测试只有降序才行,升序永远都是普通会员。
SELECT * FROM `scs_vip_level` WHERE `score` < 100 ORDER BY score desc LIMIT 1
问题二 如果积分为0 则返回null了。
问题三 比如查询所有 金牌会员级别的会员信息出来 要怎么写呢,
select * from 会员表 where 积分 >= 10000 order by id desc
这么写那么30000以上积分的白金会员也属于 >= 10000的 也都查出来了就不对了啊
今天我有点懵逼逻辑混乱,感谢您的耐心
最好是,在用户表里用一个外键(level_id)关联会员等级表,这样不会乱,你修改哪个表的数据都没有关系,ID永远不会变的。还有一个关于最高积分的获取,可以这样:直接取大于当前等级积分的积分,如果没有就是无限,如果有就用取到的减1就是当前等级的最大积分。当然这个方法不是处理sql语句,而是对取出来的数据进行遍历处理下,可能比较麻烦,仅供参考。
提供一个想法:
有一个字段叫 level,int类型,区分等级。
不需要最高积分了,触发到某一个等级最低积分,就到这等级了。
保存数据时,得保证高等级的最低积分不能比低等级的最低积分 更低。
我觉得你这么设计可以.
当获取一个用户信息的时候,
select 用户表.*, 积分表.level from 用户表 left join 积分表 on 用户表.积分 between 积分表.lower and 积分表.higher
从你问题描述和评论内容来看可以这样定义用户会员等级定义表格
表名:vip_level
表结构:id, vl_name, vl_achieve_score(decimal(n,2)), vl_discount(decimal(n,2))
为什么这样创建?
比如一个用户他的会员积分是50分,通过积分到vip_level表中依据vl_achieve_score降序排列获取第一条数据就可以了
另外,如果按照你的创建表结构的思路@vsion的查询会报错
在白金会员30000 ~ -1怎么整?
@柳公子
问题一、如图 我按照您说的设计的数据表 并定义了三个会员级别,用下面的Sql语句才能正确找到100这个积分所属的级别;您说的升序,我测试只有降序才行,升序永远都是普通会员。
问题二 如果积分为0 则返回null了。
问题三 比如查询所有 金牌会员级别的会员信息出来 要怎么写呢,
这么写那么30000以上积分的白金会员也属于 >= 10000的 也都查出来了就不对了啊
今天我有点懵逼逻辑混乱,感谢您的耐心
最好是,在用户表里用一个外键(level_id)关联会员等级表,这样不会乱,你修改哪个表的数据都没有关系,ID永远不会变的。
还有一个关于最高积分的获取,可以这样:直接取大于当前等级积分的积分,如果没有就是无限,如果有就用取到的减1就是当前等级的最大积分。当然这个方法不是处理sql语句,而是对取出来的数据进行遍历处理下,可能比较麻烦,仅供参考。