主题:  多个条件查询的问题

babyyw

职务:普通成员
等级:1
金币:0.0
发贴:29
#12002/8/8 13:37:42
我想在查询的时候同时用多个条件(比如3个)
于是我设计了一个有3个可输入文本框(输入条件)和一个按钮(提交)的表单

在searchresult.cfm中我的cfquery不知道该怎么写了
如果写成

SELECT *
FROM dbo.device
WHERE name like '#FORM.name#%' and vendor like '#form.vendor#%'
and area like '#form.area#%'


这样只要有一个条件没填,就无法查询出正确的结果
而我希望能够只输入一个条件时
就只按这一个条件进行搜索 而忽略其他为空的条件
我该怎么做



5DDC版主

职务:版主
等级:6
金币:10.0
发贴:3820
#22002/8/8 16:49:55
使用 or 连接条件!



babyyw

职务:普通成员
等级:1
金币:0.0
发贴:29
#32002/8/8 17:50:20
用OR肯定不对!



我知道

职务:普通成员
等级:4
金币:2.0
发贴:2211
#42002/8/9 8:01:32
当无值时默认为%,用and关系,这样可以吧?



dannyr

职务:普通成员
等级:1
金币:0.0
发贴:39
#52002/8/9 8:45:51
写成

SELECT *
FROM dbo.device
WHERE name like '%#FORM.name#%'

and vendor like '%#form.vendor#%'


and area like '%#form.area#%'




babyyw

职务:普通成员
等级:1
金币:0.0
发贴:29
#62002/8/9 8:58:21
用了这个方法
还是不行
好像不能用判断form.vendor是否存在作为条件
因为可能即使不输入
form.vendor也是存在的
只是为空而已



babyyw

职务:普通成员
等级:1
金币:0.0
发贴:29
#72002/8/9 9:06:58
这样就成功了
谢谢各位


SELECT *
FROM dbo.device
WHERE 0=0

and name like '#form.name#%'


and vendor like '#form.vendor#%'


and area like '#form.area#%'




5DDC版主

职务:版主
等级:6
金币:10.0
发贴:3820
#82002/8/9 9:10:56
何必这么麻烦呢!非必要条件一样是可以通过SQL查询的!



babyyw

职务:普通成员
等级:1
金币:0.0
发贴:29
#92002/8/9 9:21:29
那你就教教我呀!



5DDC版主

职务:版主
等级:6
金币:10.0
发贴:3820
#102002/8/9 9:41:24
WHERE (name like '%#name#%') or (vendor like '%#vendor#%' )
or (area like '%#area#%' )

加上括号OLEDB连接数据库!就可以了!去掉form 之后自然0字节的部分就会以*的方式执行了!尽量用OLEDB连接!SQL语法比较标准和严格!



UndeadCraft

职务:版主
等级:4
金币:10.0
发贴:1993
#112002/8/14 16:21:19
WHERE (name like '%#name#%') or (vendor like '%#vendor#%' )
or (area like '%#area#%' )
这里的%号是什么意思?



babyyw

职务:普通成员
等级:1
金币:0.0
发贴:29
#122002/8/14 16:58:02
通配符



5DDC版主

职务:版主
等级:6
金币:10.0
发贴:3820
#132002/8/14 17:28:22
? 代表一个字符
% 代表任意自负



网络白痴 | 5D荣誉斑竹

职务:普通成员
等级:4
金币:10.0
发贴:1657
#142002/8/15 8:32:33
batyvn的sql方式不能解决几个文本同时搜索吧?只是解决了在一个文本框里进行多条件搜索而已,所以还是得涉及前面的动态查询方法吧。



5DDC版主

职务:版主
等级:6
金币:10.0
发贴:3820
#152002/8/15 9:09:42
如果你用OLEDB连接数据库就是可以的!而且标准的SQL是允许的!
ODBC连接语法和OLEDB有一些差别的!