Foxtable(狐表)用户栏目专家坐堂 → 有没有更好的计算累计数量的式?


  共有3723人关注过本帖树形打印复制链接

主题:有没有更好的计算累计数量的式?

帅哥哟,离线,有人找我吗?
scott518
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
有没有更好的计算累计数量的式?  发帖心情 Post By:2014/4/2 17:09:00 [只看该作者]

请教大家,订单的累计入库的计算方式如下:其他单据类似
方式一:
在订单明细中增加列:累计入库
每次入库单保存时用其变动数量 + 累计入库 update到订单明细的累计入库 
入库单删除时用累计入库 - 入库数量 update到订单明细的累计入库

这样的好处时速度快,当要查询所有订单的累计入出库数据时直接从订单明细中取数即可。
但这样的坏处是,当操作入库单保存或者删除时可能出现某种异常出错后更新数据的代码可能部份执行,累计入库就不准确了。

第二种方式:
入库单保存进不更新订单明细的累计入库,当要查询订单的累计入库时遍历每行然后去出入库单中计算此单的总入库数量出来
这种方式数据准确,不用跨表数据的代码,但数据量大时速度一定是很慢的

还有没有其他方式?谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/4/2 17:37:00 [只看该作者]

通常都用第二种方式.

 回到顶部
帅哥哟,离线,有人找我吗?
scott518
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/4/2 17:49:00 [只看该作者]

没有其他方式了吗?第二种速度是个问题啊

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/4/2 17:52:00 [只看该作者]

通常都用统计的方式, 或者SQL语句统计 不会遍历一行行的来算,这样效率太差.

 回到顶部
帅哥哟,离线,有人找我吗?
scott518
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/4/2 17:54:00 [只看该作者]

那第一种方式可以改进吗?

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/4/2 17:55:00 [只看该作者]

没办法改进,这个方式就是有这个缺陷

 回到顶部
帅哥哟,离线,有人找我吗?
scott518
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/4/2 18:01:00 [只看该作者]

谢谢,看来只能这样了,那有没有另外的方式呢

 回到顶部
帅哥哟,离线,有人找我吗?
scott518
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/4/3 11:24:00 [只看该作者]

再请教下:如果要提取累计入库还不足的业务单据作为入库数据,如果不用方式一,用sql的话是下面这样吗?

Select a.[_Identify],订单编号,a.产品编码,a.品名 as 品名1,a.规格,a.数量,a.计量单位,c.品名 as 品名2,c.累计入库 from 订单明细 a left join (select 来源单号,产品编码,品名,sum(数量) as 累计入库 from 入库明细 group by 来源单号,产品编码,品名) c on a.订单编号 = c.来源单号 and a.产品编码=c.产品编码 where c.累计入库 < a.数量

对于库存表来说,每种产品都有合格数量,不良数量,待检数量,报废数量,这些数量都是动态从十几张不同类别的进出库单据中产生的(有销售出货,退货,采购入库,退货,外协入库,退货,生产入出等等),这种情况如果不用方式一处理,方式二根本没办法从这么多单据中查询库存数据啊?这样的情况怎么办,还有没有更好的办法?



 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/4/3 11:30:00 [只看该作者]

可以联合查询的呀,你上个例子吧

 回到顶部
帅哥哟,离线,有人找我吗?
scott518
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
  发帖心情 Post By:2014/4/3 11:46:00 [只看该作者]

用十几张表怎么联合查询啊!就是想求个思路,没有例子。谢谢,看来还是先用方式一,个别出错的数据再调整了。

 回到顶部
总数 11 1 2 下一页