Office中国论坛/Access中国论坛

标题: 怎么显示没有查到的数据呀?(解决) [打印本页]

作者: sblisb    时间: 2011-5-19 13:55
标题: 怎么显示没有查到的数据呀?(解决)
本帖最后由 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.三级编号);
[attach]45612[/attach]


作者: hjb016    时间: 2011-5-19 14:00
帮你顶一下吧
作者: sblisb    时间: 2011-5-19 14:01
hjb016 发表于 2011-5-19 14:00
帮你顶一下吧

怎么管理员不回答问题,老顶贴,和灌水一样
机器人?
作者: stvent    时间: 2011-5-19 15:09
未能读懂你想怎样的效果!~
作者: todaynew    时间: 2011-5-19 15:22
sblisb 发表于 2011-5-19 13:55
两张表,tmpxls和Sheet1表,我根据tmpxls查询出sheet1表中的相关记录,
现在我想知道表A即tmpxls表中哪些数 ...

请参见《求同存异》一文。
作者: aslxt    时间: 2011-5-19 20:36
查询-插入查询-查找不匹配项查询向导。
仔细看一下说明
作者: sblisb    时间: 2011-5-21 17:12
aslxt 发表于 2011-5-19 20:36
查询-插入查询-查找不匹配项查询向导。
仔细看一下说明

查找不匹配项应当不能用,因为在查询中有Like "*"+

作者: sblisb    时间: 2011-5-21 17:14
todaynew 发表于 2011-5-19 15:22
请参见《求同存异》一文。

求同存异小品不错,学了个NOT Exists用法,sql语句最后的“ And True”是用来做什么?
作者: todaynew    时间: 2011-5-21 17:29
sblisb 发表于 2011-5-21 17:14
求同存异小品不错,学了个NOT Exists用法,sql语句最后的“ And True”是用来做什么?

如果不加一个Ture,就需要删除最后的一个And,于是省事的写法就是加上一个True。其原理是一个逻辑表达式为A的话,A=A and True。
作者: sblisb    时间: 2011-5-22 21:40
本帖最后由 sblisb 于 2011-5-22 21:40 编辑
todaynew 发表于 2011-5-21 17:29
如果不加一个Ture,就需要删除最后的一个And,于是省事的写法就是加上一个True。其原理是一个逻辑表达式为 ...


如果想unicon联起来显示查到的数据和未查到的数据,列数不等怎么办?
作者: sblisb    时间: 2011-5-22 21:51
噢,知道了,搞个空列对应就成
作者: todaynew    时间: 2011-5-23 08:42
sblisb 发表于 2011-5-22 21:40
如果想unicon联起来显示查到的数据和未查到的数据,列数不等怎么办?

无需列数相等,只要两表(或查询)包含需要比较的字段即可。
作者: sblisb    时间: 2011-5-23 14:26
todaynew 发表于 2011-5-23 08:42
无需列数相等,只要两表(或查询)包含需要比较的字段即可。

列数相等,不是指“需要比较的字段”(我想你这句是指对比的条件,WHERE语句后的)。
我试了下,应当是sql语句显示的字段要相等,即SELECT 。。。FROM中间的字段数要一致
作者: todaynew    时间: 2011-5-23 16:03
和两个表的字段数量没什么关系,只要能构成如下情形就行:
select * from A
where exists  (select * from B where B.f1=A.f4 and B.f3=A.f2.....)
作者: sblisb    时间: 2011-5-23 17:57
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);
红字部分字段数不一致能用?

作者: todaynew    时间: 2011-5-23 19:30
本帖最后由 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子句没什么关系。上面的查询是联合查询的范畴,你恐怕搞混淆了。

作者: sblisb    时间: 2011-5-23 21:59
sblisb 发表于 2011-5-22 21:40
如果想unicon联起来显示查到的数据和未查到的数据,列数不等怎么办?

原来是版主没看清,呵呵
问题解决完成,结贴




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3