标题:应该是个带有共性的查询问题
只看楼主
jiguanqiang8
Rank: 1
等 级:新手上路
帖 子:154
专家分:2
注 册:2013-2-7
结帖率:85.71%
已结贴  问题点数:16 回复次数:13 
应该是个带有共性的查询问题
比如 SELECT * FROM TT where 姓名="王二",有没有一个值,当姓名=?,比如条件就是个问号,结果查询出所有,当没有输入条件一样,如果有这样的,在多条件查询时会省略很多代码,每次查询,我还要判断有没有条件,如果有就用如下之类的语句 SELECT * FROM TT where 姓名="王二",如果没有,就用SELECT * FROM TT ,条件多了就很麻烦,能不能不管有没有条件都用SELECT * FROM TT where 姓名=。。。之类的呢,只是赋值不一样
搜索更多相关主题的帖子: where 结果查询 姓名 
2013-02-23 10:54
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
得分:2 
试试:
xm='姓名="史小丽"'
SELECT * from 表名 where &xm
xm='.t.'
SELECT * from 表名 where &xm

相互学习,互相交流,共同提高。
2013-02-23 11:38
jiguanqiang8
Rank: 1
等 级:新手上路
帖 子:154
专家分:2
注 册:2013-2-7
得分:0 
这不对,假如有5个条件,每个条件你都要判断是否有,算下来就要写10个查询语句
2013-02-23 12:24
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:2 
1、比如 SELECT * FROM TT where 姓名="王二",有没有一个值,当姓名=?,比如条件就是个问号,结果查询出所有,当没有输入条件一样,如果有这样的,在多条件查询时会省略很多代码,
用个text接受输入姓名
cxm=allt(thisform.text1.value)
SELECT * FROM TT where 姓名=cxm

2、每次查询,我还要判断有没有条件,如果有就用如下之类的语句 SELECT * FROM TT where 姓名="王二",如果没有,就用SELECT * FROM TT ,条件多了就很麻烦,能不能不管有没有条件都用SELECT * FROM TT where 姓名=。。。之类的呢,只是赋值不一样
用if endif
结合上面 例:
if !empt(cxm)
SELECT * FROM TT where 姓名=cxm
else
SELECT * FROM TT
endif
2013-02-23 12:28
jiguanqiang8
Rank: 1
等 级:新手上路
帖 子:154
专家分:2
注 册:2013-2-7
得分:0 
这样做当然可以,我的意思cxm=allt(thisform.text1.value)
不管cxm是否空值,都用一个语句SELECT * FROM TT where 姓名=cxm,只是你能不能当CXM为空时,给cxm附一个值,使它查询出来的效果等于SELECT * FROM TT

2013-02-23 12:42
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:2 
cxm=allt(thisform.text1.value)
SELECT * FROM TT where ALLTRIM(姓名)==cxm INTO CURSOR TEMP
IF RECCOUNT([TEMP])<=0
   =MESSAGEBOX([未查到符合条件的记录])
ELSE
   ***查到符合条件的记录代码
ENDIF

坚守VFP最后的阵地
2013-02-23 12:49
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:0 
以下是引用jiguanqiang8在2013-2-23 12:42:48的发言:

这样做当然可以,我的意思cxm=allt(thisform.text1.value)
不管cxm是否空值,都用一个语句SELECT * FROM TT where 姓名=cxm,只是你能不能当CXM为空时,给cxm附一个值,使它查询出来的效果等于SELECT * FROM TT
你用message不就行了

if !empt(cxm)
SELECT * FROM TT where 姓名=cxm
else
messagebox("没查询姓名")
endif
2013-02-23 14:16
jiguanqiang8
Rank: 1
等 级:新手上路
帖 子:154
专家分:2
注 册:2013-2-7
得分:0 
看来是没有这个值,现在只有姓名这一个条件,假如有5个条件同时产生,每个条件都可能是空值,也可能不是空值,用一条SELECT语句,不用if 和DO CASE之类的语句行不行啊
2013-02-23 14:40
jiguanqiang8
Rank: 1
等 级:新手上路
帖 子:154
专家分:2
注 册:2013-2-7
得分:0 
对了,在数据库里,假如创建一个视图,有5个参数,打开的时候,我不给参数赋值,会有什么结果
2013-02-23 14:48
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
得分:2 

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2013-02-23 15:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-399060-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.329530 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved