设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 3177|回复: 16
打印 上一主题 下一主题

[查询] 怎么显示没有查到的数据呀?(解决)

[复制链接]
跳转到指定楼层
1#
发表于 2011-5-19 13:55:23 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 sblisb 于 2011-5-22 16:11 编辑

两张表,tmpxls和Sheet1表,我根据tmpxls查询出sheet1表中的相关记录,
现在我想知道表A即tmpxls表中哪些数据没查询到,(以便检查数据,查不到是输错了,还是什么原因)要如何改语句,能在查得结果时也显示未查到的数据为空白吗?
这个能做吗
原查询语句如下
SELECT b.*
FROM tmpXls AS a, Sheet1 AS b
WHERE Right("000" & a.一级编号,3)=b.一级编号 And Right("00" & a.二级编号2,2)=b.二级编号2 And IIf(Instr(a.三级编号,"(")>0,b.三级编号 Like "*"+Mid(a.三级编号,1,Instr(a.三级编号,"(")-1)+"*",Right("000" & a.三级编号,3)=b.三级编号);


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
17#
 楼主| 发表于 2011-5-23 21:59:30 | 只看该作者
sblisb 发表于 2011-5-22 21:40
如果想unicon联起来显示查到的数据和未查到的数据,列数不等怎么办?

原来是版主没看清,呵呵
问题解决完成,结贴
16#
发表于 2011-5-23 19:30:25 | 只看该作者
本帖最后由 todaynew 于 2011-5-23 19:31 编辑
sblisb 发表于 2011-5-23 17:57
不明白,
如下
SELECT b.*


这是另外的问题吧?
这个查询是否能成立:
SELECT b.*
FROM tmpXls3 AS a, Sheet1 AS b
UNION
SELECT tmpXls3.一级编号, tmpXls3.二级编号2
FROM tmpXls3

与NOT Exists子句没什么关系。上面的查询是联合查询的范畴,你恐怕搞混淆了。
15#
 楼主| 发表于 2011-5-23 17:57:20 | 只看该作者
todaynew 发表于 2011-5-23 16:03
和两个表的字段数量没什么关系,只要能构成如下情形就行:
select * from A
where exists  (select * fro ...

不明白,
如下
SELECT b.*
FROM tmpXls3 AS a, Sheet1 AS b
WHERE Right("000" & a.一级编号,3)=b.一级编号 And Right("00" & a.二级编号2,2)=b.二级编号2 And IIf(Instr(a.三级编号,"(")>0,b.三级编号 Like "*"+Mid(a.三级编号,1,Instr(a.三级编号,"(")-1)+"*",Right("000" & a.三级编号,3)=b.三级编号)
UNION
SELECT tmpXls3.一级编号, tmpXls3.二级编号2
FROM tmpXls3
WHERE NOT Exists(select * from Sheet1 where Sheet1.一级编号 = Right("000" & tmpXls3.一级编号, 3) And Sheet1.二级编号2 = Right("00" & tmpXls3.二级编号2, 2) And Sheet1.三级编号 = IIf(InStr(tmpXls3.三级编号, "(") > 0, Sheet1.三级编号 Like "*" + Mid(tmpXls3.三级编号, 1, InStr(tmpXls3.三级编号, "(") - 1) + "*", Right("000" & tmpXls3.三级编号, 3)) And True);
红字部分字段数不一致能用?
14#
发表于 2011-5-23 16:03:39 | 只看该作者
和两个表的字段数量没什么关系,只要能构成如下情形就行:
select * from A
where exists  (select * from B where B.f1=A.f4 and B.f3=A.f2.....)
13#
 楼主| 发表于 2011-5-23 14:26:07 | 只看该作者
todaynew 发表于 2011-5-23 08:42
无需列数相等,只要两表(或查询)包含需要比较的字段即可。

列数相等,不是指“需要比较的字段”(我想你这句是指对比的条件,WHERE语句后的)。
我试了下,应当是sql语句显示的字段要相等,即SELECT 。。。FROM中间的字段数要一致
12#
发表于 2011-5-23 08:42:35 | 只看该作者
sblisb 发表于 2011-5-22 21:40
如果想unicon联起来显示查到的数据和未查到的数据,列数不等怎么办?

无需列数相等,只要两表(或查询)包含需要比较的字段即可。
11#
 楼主| 发表于 2011-5-22 21:51:13 | 只看该作者
噢,知道了,搞个空列对应就成
10#
 楼主| 发表于 2011-5-22 21:40:29 | 只看该作者
本帖最后由 sblisb 于 2011-5-22 21:40 编辑
todaynew 发表于 2011-5-21 17:29
如果不加一个Ture,就需要删除最后的一个And,于是省事的写法就是加上一个True。其原理是一个逻辑表达式为 ...


如果想unicon联起来显示查到的数据和未查到的数据,列数不等怎么办?
9#
发表于 2011-5-21 17:29:42 | 只看该作者
sblisb 发表于 2011-5-21 17:14
求同存异小品不错,学了个NOT Exists用法,sql语句最后的“ And True”是用来做什么?

如果不加一个Ture,就需要删除最后的一个And,于是省事的写法就是加上一个True。其原理是一个逻辑表达式为A的话,A=A and True。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-9-22 02:20 , Processed in 0.107777 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表