Access交流中心

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

关于复杂查询的优化

朱生  发表于:2016-05-05 11:15:00  
复制


一个订单可能会有几次送货,在汇总查询数据的时候就有可能出现三笔订单对应三笔出库,导出EXCEL做透视表汇总必须要手动将重复的订单重量一个一个删除,非常麻烦。。

附档是本人想的解决办法,可以实现“订单重量”去重复,将重复的变成0,但是因为数据量越来越大,现在这种查询运行好慢,特别是把几个查询嵌套子查询后运行都要等好久。

请高手指点一下,帮忙优化一下附档的查询,或者说有更好的办法解决?

谢谢!点击下载此附件

 

Top
朱生 发表于:2016-05-05 11:24:28
补充一下,后台数据库是SQL,用ADO方式将查询加载到ACCESS窗体显示。。

煮江品茶 发表于:2016-05-05 11:42:53
有两种方法解决:第一种是找出为什么重复的原因,然后克服之;第二种是不打算找重复的原因,而用distinct子句过滤掉重复的记录。

朱生 发表于:2016-05-05 12:02:53
这个重复是必然的呀,因为一个订单对应几次送货,如果做汇总查询的话(订单与出库相关字段都显示在一个查询里)订单记录必然是重复显示的呀。。

煮江品茶 发表于:2016-05-05 14:41:02
既然必然,何来重复?

朱生 发表于:2016-05-05 15:00:29

呵呵,,看看示例就知道了。。

就是想要达到自己要的一个效果吧。。。



煮江品茶 发表于:2016-05-05 17:00:26
你没有理解我的设问。


所谓重复不重复,只是在你汇总的时候订单量会出现重复计算的问题。所以这是两个角度观察数据的问题。


第一个角度你需要观察的是订单分解为送货单的详细情况,这个角度并不存在重复的问题,因为你观察的基点是送货单而不是订单;第二个角度你需要观察的是订单执行情况,这个时候你才需要汇总送货单的数量,也才有了订单量重复的问题存在。


两个角度观察数据,可以用两个不同的查询语句来呈现数据。你现在实际要做的只是一个订单执行情况的查询,这个查询并不需要以现有的查询为基础,完全可以另外写一个查询来处理,也就是一个订单表与一个送货表联合查询的联接而已。


比如:
1、送货单查询
select a.*,b.送货时间,b.送货量
from 订单表 as a
inner join 送货表 as b
on a.订单ID=b.订单ID


2、订单执行情况查询
select a.*,c.送货量,a.订单量-nz(c.送货量,0) as 未送货量
from 订单表 as a
left join 
(select sum(b.送货量) as 送货量 from 送货表 as b group by b.订单ID) as c
on a.订单ID=c.订单ID;


所以,重复与不重复是相对问题而言的,这是我的设问的含义所在。知道了问题是什么,才能找到正确解决的方法。



朱生 发表于:2016-05-05 17:15:16

您好,感谢回复,还是不能完全理解您的意思。。

另外我这个是按记录的,不存在库存表,入一笔记录就出一笔记录,所以不存在未送货量,人工审核是否完成,因为是按重量的,不可能与订单重量刚好的,会有送多送少的,以实际送的为准。。


这个问题用文字很难表达,其实您可看附档已做好的 查询5 的效果就明白了。。

我就是要 查询5 那样的效果,但是我做的较复杂,有没有简化一点的。。



煮江品茶 发表于:2016-05-05 18:07:35


朱生 发表于:2016-05-06 00:54:43

请问有没什么好办法呢?简化这个查询或其他方法?



zhaoyoulong 发表于:2016-05-06 10:50:55

优化一下你的各种表

应该只要一个 客户表

                   订单表

                   出库表

就行了!每个表字段设置全面一些就行了




朱生 发表于:2016-05-06 11:59:45

表是固定的,现在主要是实现 查询5 那个效果,是不是只有这种方法了? 是否还有更简便的方法,速度快的? 

查询5  已达到我的要求,但是就是数据量大的情况下运行慢。。。

只能先这样用着了。。。



paciwater 发表于:2016-06-02 13:47:19

我觉得可以换换思路,将你在excel中做出的透视表要求或做好的结果发出来,看看能不能直接在access中实现。

附件的查询嵌套查询,还是比较复杂。



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