Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

关于查询问题的求救!

啊静  发表于:2010-12-15 16:37:23  
复制

关于ACCESS查询的问题:
表1:A列,B列,C列,D列。
表2:E列(数据有可能与表1A列对应,也有可能与表1B列对应)。
查询表:E列(在表1A、B列查询,有1列符合即可),显示对应A、B、C、D列内容。
不要两次查询追加进一个表的,只做一次查询怎么操作?

 

Top
煮江品茶 发表于:2010-12-15 17:04:45
select * from 表1 where (A in (select E from 表2)) or (B in (select E from 表2))

啊静 发表于:2010-12-15 19:20:14

查询出来的ABCD列确实是我想到的结果,只是E列不显示。我让E列显示了,会出现好多看似重复的数据。这是为什么?



煮江品茶 发表于:2010-12-15 19:36:25

不能把表2表拖入查询设计视图,如果那样的话就会形成笛卡尔集,也就是说数据量将为表1的记录数乘以表2的记录数,也就如你看到的会有很多重复记录。

 

如果要在查询中显示E的话,可以用dlookup函数。
select *,dlookup("E","表2","E='" & [A] & "' Or E='" & [B] & "'") as E from 表1 where (A in (select E from 表2)) or (B in (select E from 表2))

 

 

以上的这个查询当数据量大的话,查询的速度会很慢。



煮江品茶 发表于:2010-12-15 19:40:24

好像这样写也可以:

select *,dlookup("E","表2","E='" & [A] & "' Or E='" & [B] & "'") as E from 表1 where dlookup("E","表2","E='" & [A] & "' Or E='" & [B] & "'") not is null



总记录:4篇  页次:1/1 9 1 :