日期:2014-05-18  浏览次数:20554 次

求一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里面不认,可能要修改规则