最大值与最小值问题.
数据表如下:
ID MIN_Value MAX_Value My_Value
001 0 2 1.2 '即在0与2之间时我得到1.2的值.
001 5 7 1.5 '----5与7------------1.5-----
001 7 15 1.7 '----7与15-----------1.7-----
001 20 22 2.2 '----20与22----------2.2------
现在在这个数据表里面增加记录,如果已经存在界于 MIN_Value 与 MAX_Value 之间的值,则提示,否则新增记录.
原始记录是不规则的,想了好多办法都搞不定.
附我的思路:
通过记录查找,SQL语句是 select * from TB where (MIN_Value <= '" & Text1(0).Text & "' and MAX_Value > '" & Text1(0).Text & "')" & " or (MIN_Value < '" & Text1(1).Text & "' and MIN_Value >= '" & Text1(1).Text & "')
Text1(0)是最小值输入框,Text1(1).text是最大值输入框.
如果查找结果为FALSE,则新增记录.
这样做会有一个地方不正常,就是当最小值比所有的最小值都小和最大值比所有值都大时,查找结果也为FALSE,同样会增加记录,这样就不正确了.
请高手指教.
问题点数:20、回复次数:9Top
1 楼lsp69(浪子神剑)回复于 2005-05-31 17:19:52 得分 1
是不是每条记录中都有一个最小字段?
Top
2 楼wghshy(小乐)回复于 2005-06-01 08:12:50 得分 0
对,每条记录中都有一个最小字段.
这个数据表的意思就是介于一个范围的话就有一个值与它对应.Top
3 楼flyingscv(zlj)回复于 2005-06-01 09:17:06 得分 17
各范围没有交叉吧
select top 1 min_value,max_value where minvalue[<>].. order by minvalue
取出来用代码比Top
4 楼wghshy(小乐)回复于 2005-06-01 09:21:48 得分 0
范围没有交叉.
但用户输入的时候有可能包含在已经存在的范围之间,也可能是在好几个范围之间,还有可能是包含了所有的范围.这些条件都要想进去.
老兄这样写好象达不到效果吧.
这样写的话只描述了用户输入的内容包含在已存在的范围的情况,没包含其它情况.Top
5 楼longshouwo(龙之爪)回复于 2005-06-01 09:34:22 得分 1
还没有看明白,你想手工增加还是自动增加字段?判断值又以什么为标准?没看懂你的思路Top
6 楼ping0117(不是我也不是她)回复于 2005-06-01 10:11:13 得分 1
不怎么明白啊!Top
7 楼wghshy(小乐)回复于 2005-06-01 10:12:38 得分 0
还没有看明白,你想手工增加还是自动增加字段?判断值又以什么为标准?没看懂你的思路
--------------------------------------------
当然是用户自己增加记录了.
判断的标准是如果用户输入的这个范围已经存在就提示,如果不存在这个范围就新增这个记录.Top
8 楼wghshy(小乐)回复于 2005-06-01 10:16:39 得分 0
这个数据表就是从多少到多少对应一个值.
用户新增记录的时候(也就是新增一个范围和对应的值),要先进行判断,如果这个范围已经在数据表中的话,当然不能添加进去.确定用户输入的范围与当前数据表中范围没有交叉就行了.Top
9 楼flyingscv(zlj)回复于 2005-06-02 09:05:36 得分 0
我的意思是先取出来用代码比,而不是sql语句来比较
详细点:
比如:判断[x,y]
select max(max_v).. where maxv<=x
比如x=10可取的A=7,没有设置A=x
select min(min_v).. where minv>=A
比如A=7可取的B=7,没有设置B=y
if a<=x and b>=y then insert....
Top




