求一SQL语句,谢谢
数据库中有两张表A和B
表A
ID UserID Value
1 001 52
2 002 48
表B
ID Level Condition
1 1 V> 50
2 2 40 <V <50
其中 Condition里面的值就是V> 50这种形式,有没有办法得到UserID的Level值?谢谢
------解决方案--------------------没有
数据库设计完全错误。
V> 50,40 <V <50
这样的 东西,程序是不会认识的
你应该在设置这个表达式的时候就要组织成标准的SQL语句
比如:V> 50
就是:A.Value > 50
比如:40 <V <50
就是:A.Value > 40 and A.Value < 50
只有这样的规则,才可以完成你的要求。
大家批批。
------解决方案--------------------同意楼上~~可以在insert到表A的时候写个触发器,判断A.value的值,B.Condition可以设置为一个bit类型存储~~同时还需要在A和B之见建立一个用于连接的字段~~比如说在B中存储A.id,才可以查到~
------解决方案--------------------mark
------解决方案--------------------规则定好,直接写sql语句可以处理
declare @sql varchar(2000)
set @sql= 'select *, (case '
select @sql=@sql+ ' when '+replace(condition, 'V ', 'cast(value as float) ')+ ' then '+[level] from tb
set @sql=@sql+ ' end) as level1 from ta '
现在就是 '40 <V <50 '这个在sql里面不认,可能要修改规则