ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1226|回复: 7

[求助] ACCESS 多表查询求助

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-1-20 10:03 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
表1结构:
         日期          产品名称             订单编号      入库数量
2015-01-18          A                          2014            20     
2015-01-19          B                          2013            20         
表2 结构:
         日期          产品名称             订单编号      出库数量
2015-01-18          A                          2014            10   
2015-01-19          C                          2013            10
想得到如下结果:
         日期          产品名称             订单编号      入库数量         出库数量
2015-01-18          A                          2014            20                    10
2015-01-19          B                          2013            20   
2015-01-19          C                          2013                                     10
其中  日期          产品名称             订单编号     字段完全相同就合并 ,请教下有没有办法查询到这种结果,拜托各位了能不能给个查询代码,Open语句或者更好的方法,谢谢了

TA的精华主题

TA的得分主题

发表于 2015-1-20 11:32 | 显示全部楼层
  1. SELECT C.日期, C.产品名称, C.订单编号, Sum(C.入库) AS 入库数量, Sum(C.出库) AS 出库数量
  2. FROM (
  3. SELECT 日期, 产品名称, 订单编号, 入库数量 AS 入库, 0 AS 出库 FROM 表1
  4. UNION ALL
  5. SELECT 日期, 产品名称, 订单编号, 0, 出库数量 FROM 表2
  6. ) AS C
  7. GROUP BY C.日期, C.产品名称, C.订单编号
  8. ORDER BY C.日期, C.产品名称, C.订单编号
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-20 11:52 | 显示全部楼层
styhs 发表于 2015-1-20 11:32

非常感谢你,我去尝试下

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-20 11:59 | 显示全部楼层
styhs 发表于 2015-1-20 11:32

弱弱的问下"c."是代表什么?我只有两个表

TA的精华主题

TA的得分主题

发表于 2015-1-20 12:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
重命名联合查询的表名

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-20 12:31 | 显示全部楼层
styhs 发表于 2015-1-20 11:32

谢谢,看懂了,是个变量,如果想做个按名称模糊查询和按日期查询怎么做呢?麻烦大神再帮下忙

TA的精华主题

TA的得分主题

发表于 2015-1-20 14:18 | 显示全部楼层
从效率上考虑,筛选条件应放在联合查询里面,但条件需要写多次:
SELECT 日期, 产品名称, 订单编号, 入库数量 AS 入库, 0 AS 出库 FROM 表1 WHERE 日期 Between #2015-1-1# And #2015-1-31# And 产品名称 Like '*A*'
UNION ALL
SELECT 日期, 产品名称, 订单编号, 0, 出库数量 FROM 表2 WHERE 日期 Between #2015-1-1# And #2015-1-31# And 产品名称 Like '*A*'

如果数据量不多,则筛选条件可以直接放在分组语句之前:
) AS C
WHERE C.日期 Between #2015-1-1# And #2015-1-31# And C.产品名称 Like '*A*'
GROUP BY C.日期, C.产品名称, C.订单编号

特别注意的是,使用Like时,一般不建议使用 Like '*A*' 这种的方式,这样会导致表索引失效、需要进行全表扫描,如条件允许,建议使用 Like 'A*' 这种的方式。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-20 22:10 | 显示全部楼层
styhs 发表于 2015-1-20 14:18
从效率上考虑,筛选条件应放在联合查询里面,但条件需要写多次:
SELECT 日期, 产品名称, 订单编号, 入库数 ...

非常感谢,我是新手不怎么会,现在用的是用vb做一个库存系统,不会查询ACCESS,以后遇到什么问题可能还h会麻烦你了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-26 12:04 , Processed in 0.038531 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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