这个SQL语句该怎么写,我们老师也不会

来源:百度知道 编辑:UC知道 时间:2024/05/05 09:38:21
有两个表,已简化
会员(ID,姓名,积分)
会员类型(类型名,下限)
现在要得到一个视图
视图(ID,姓名,积分,类型名)
会员的类型根据积分判断,当积分大于等于会员类型表中的一个下限时,判断出类型名
比如,会员类型如下
类型名 下限
普通会员 0
青铜会员 100
白银会员 500
那么如果一个会员的积分为50,那么他是普通会员,是120,那么他是青铜会员,高于500,那就是白银会员
对于这个SQL语句我自己想了一个办法,虽然得到了正确的结果,但是没有办法创建出视图,会出现一个错误
这是我写得SQL语句
select ID,姓名,积分,类型名
from (select ID,姓名,积分,类型名,MAX(下限)
from 会员,(select *
from 会员类型
order by 下限
)table1
where 积分 > = table1.下限
group by ID
)table2
我觉得我写得不太对,希望高手能给与正确的答案

这是错的.case when 积分>=500 then '白银会员'
when 积分>=100 then '青铜会员'
when 积分>=0 then '普通会员'应该是case when 积分>=500 then '白银会员'
when 500>积分>=100 then '青铜会员'
when 100>积分>=0 then '普通会员'

不知道你用的是什么数据库,下面这个是针对MySQL数据库的,如果你用其他的数据库,别的都不用改,只要找到与limit 1(只取一条记录)语意一样的关键字,
select ID,姓名,积分,类型名 from 会员,会员类型 where 积分 >= 下限 order by 下限 DESC limit 1;

create view view_name
as
select id,name,积分,类型名=(case when 积分>=500 then '白银会员'
when 积分>=100 then '青铜会员'
when 积分>=0 then '普通会员'
end)
from 会员,会员类型 b
group by id,name,积分
我的试图的缺陷就是没有下限而是用字段值代替的
下面哪个人你有没有做测试啊我是做过测试的
你要说不对先你 自己试试哦