VFP select 查询

aaa3表(商品名 c(10),单价 n(8,2))
"0001" 123.00
"0002" 165.00
"0003" 1650.00
"0004" 175.00
"0005" 132.00
aaa4表(同上:)
"0002" 120.00
"0009" 132.00
"0010" 150.00

现:
1.select aaa4.商品名,aaa4.单价,aaa3.商品名,aaa3.单价 from aaa4 left join aaa3 on aaa4.商品名=aaa3.商品名 结果如下:
商品名_A 单价_A 商品名_B 单价_B
0002 120.00 0002 165.00
0009 132.00 .NULL. .NULL.
0010 150.00 .NULL. .NULL.
2.select aaa4.商品名,aaa4.单价,aaa3.商品名,aaa3.单价 from aaa4 left join aaa3 on aaa4.商品名=aaa3.商品名 where aaa3.商品名="0002" 结果如下:
商品名_A 单价_A 商品名_B 单价_B
0002 120.00 0002 165.00
3.select aaa4.商品名,aaa4.单价,aaa3.商品名,aaa3.单价 from aaa4 left join aaa3 on aaa4.商品名=aaa3.商品名 where aaa3.商品名 is Null
结果0条记录。
问:3中 应该是0009,0010两条记录啊,怎么查不到?
最近工作在用VFP。
还有,where aaa3.商品名 is Null 这个筛选条件是最关键的,不能去啊。整个语句是一个大程序中的一小段。

呃,isnull()也同样不行。还有,is null可以用(我直接输入null值查询试过)。我用的是VFP6.0,在两台电脑上试过,都是上面的结果。

3中 where aaa3.商品名 is Null 是用来描述连接之后的查询表的,所以语句没问题。
另:该问题我以找出答案,版本问题,至少6.0不行,9.0可以。深层原因不明。

不等深层原因了,结贴了。我就纳闷了,电脑高手们都去哪了?

像你所写的编写试查询了一下:
select aaa4.商品名,aaa4.单价,aaa3.商品名,aaa3.单价 from aaa4 left join aaa3 on aaa4.商品名=aaa3.商品名 where isnull(aaa3.商品名)

select aaa4.商品名,aaa4.单价,aaa3.商品名,aaa3.单价 from aaa4 left join aaa3 on aaa4.商品名=aaa3.商品名 where aaa3.商品名 is Null
的运行结果是一样的,空表~~~
这里的推理有点不太对哦,1中是因为使用aaa4 left join aaa3 ,这样aaa4中字段都要查询到的,而aaa3中与aaa4中对应的但不存在的商品名用.null.来表示,并不是aaa3中存在商品名为空值的~~~可以用right join 试试看~~~
3中问题的关键就是这句:where aaa3.商品名 is Null 它是不成立的~~~
可以想一下如果仅有上边的一个表aaa3.dbf的话,可以这样查询: select aaa3.商品名,aaa3.单价 from aaa3.dbf where aaa3.商品名="0002"
但是如果这样: select aaa3.商品名,aaa3.单价 from aaa3.dbf where aaa3.商品名 is Null 则是不可以的,因为本身aaa3中已经输入的5个字段并且仅有这5个字段,它们是有商品名的!不存在is Null !
另外,我又试了一下,(好像)如果想要用 is NULL 查询语句,还必须在数据库表的表设计器中把NULL选项点上对号!在给表输入数据时,对于不输入的可以按CTRL+0 (注意是数字)可以输入空值NULL。此外,空值NULL通常不是输入的,可以设置为默认值。默认值的设置同样在表设计器中,这样再不输入的情况下可以默认显示.NULL. 如此,可以查询了~~~
呵呵,以前学的没有好好得学,临时查学了一下,多有不足哦!
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-06-15
select aaa4.商品名,aaa4.单价,aaa3.商品名,aaa3.单价 from aaa4 left join aaa3 on aaa4.商品名=aaa3.商品名 where isnull(aaa3.商品名)

VFP里判断空要用isnull()函数
第2个回答  2009-06-15
注意这一句:where aaa3.商品名 is Null

把它去掉试试。

VFP这软件是上大学的时候学的,现在电脑上也没装。这技术早没人用了,你怎么还学这个??

Vfp 如何用select查重
从一个或多个表中检索数据。当使用 SQL SELECT 创建查询时,Visual FoxPro 解析查询并从表中检索指定的数据。可以从“命令”窗口、Visual FoxPro 程序或使用查询设计器来创建 SQL SELECT 查询。SQL SELECT 命令的完整语法显示如下:SELECT [ALL | DISTINCT] [TOP nExpr [PERCENT]] Select_List_Item [...

VFP中应用SELECT语句
SELECT a.单位编号,a.单位名称,COUNT(b.定额) as 单位人数,SUM(b.定额) as 合计定额,b.年份 FROM 单位表 a ,帐户定额表 b WHERE a.单位编号=b.单位编号 AND b.定额<>0 GROUP BY a.单位编号,a.单位名称,b.年份 这个视图在查询时就能当表用了。在报表中可以与表一样的使用。=== 你概...

vfp写的程序基本都是select查询语句,怎么自动执行下一条语句呢 不用...
执行完一个Select,程式没有报错,条件允许就会执行下一个Select呀,不用按Esc呀

VF中SQl语句中的select语句如何使用……
SQL语法SQL给出了简单而又丰富的查询语句形式,SQL的查询命令也称作SELECT命令,它的基本形式由SELECT-FROM-WHERE查询块组成,多个查询块可以嵌套执行。格式: SELECT [ALL|DISTINCT][ TOP〈表达式〉 ] [〈别名〉] 〈Select表达式〉 [AS 〈列名〉 ][, [ 〈别名〉] 〈Select表达式〉...

在VFP中怎么用SELECT命令查找同名不同姓的记录?
用at("xab",3,4)="ab"一个中文两个字符,看姓有几个字符,名有几个字符 3是从第三个字符算起,长度为4个字符串的名字.就这样你变通一下就行了。

VFP select 查询
select aaa4.商品名,aaa4.单价,aaa3.商品名,aaa3.单价 from aaa4 left join aaa3 on aaa4.商品名=aaa3.商品名 where aaa3.商品名 is Null 的运行结果是一样的,空表~~~这里的推理有点不太对哦,1中是因为使用aaa4 left join aaa3 ,这样aaa4中字段都要查询到的,而aaa3中与aaa4中...

VFP select查询
select ... from 表1 i left join 表2 j i是表1的别名,j是表2的别名,i代表表1,j代表表2 select i 表是表1所在工作区

vfp中select后怎么在窗口中显示
使用数组、使用表格控件。1、使用数组:可以将SELECT语句的结果存储在数组中,在VFP窗口或其他控件中遍历数组来显示数据。2、使用表格控件:想在表单或窗口中显示查询结果,可以使用表格控件。

vfp作业,利用SELECT-SQL语句建立查询
select xh,XML_SCHEMA_NAMESPACE,xb,csrq,jq,bjbh from xs where YEAR(csrq)>=1990 order by csrq asc --16.基于xs表查询张姓和王姓同学的姓名和籍贯,要求输出字段包括xm和jg,不能有重复内容,结果按籍贯排序,相同时再按姓名排序。select distinct xm,jg from xs where xm like'张%'or xm ...

VFP 的select查询语句中使用IIF的问题
主要是因为SELECT是标准SQL语言,VFP特种函数在其他的如SQL或ORACLE中不好用,所有不了解,建议你不要使用,如果想实现该功能,可以通过多条VFP命令来实现这一功能,第一条使用SELECT来完成筛选临时数据,后面再处理数据,最终输出.因为任何问题都不一定只用一条命令来解决,该用多条就用,不能因为程序而程序....

相似回答