SQL 语句 计算库存优化

qhlf78 2019-01-30 01:54:45
有一下几张表:(简单例举,实际情况要复杂,比如采购入库有税率,库存金额取值税后))
采购入库表:编码 名称 单价 数量 金额
盘存入库表:编码 名称 单价 数量 金额
销售出库表:编码 名称 单价 数量 金额
调拨出库表:编码 名称 单价 数量 金额
盘亏出库表:编码 名称 单价 数量 金额
库存表:编码 名称 单价 库存数量 库存金额

库存=入库+盘存-销售出库-调拨出库-盘亏出库

正常不出错情况下,每次入库 出库 库存都是正确的,但由于某些原因,库存可能会不准确
就需要去校验库存

之前校验库存都是用 库存=入库+盘存-销售出库-调拨出库-盘亏出库 去挨个商品循环去处理
这对于商品数量不多的情况下 还是可能等待
但是现在商品数量太多,这种方法去处理及其耗时
所以问问大家,有什么好的方法或者 用多表联合的方式去UPDATEL ?
...全文
138 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qhlf78 2019-01-31
  • 打赏
  • 举报
回复
引用 1 楼 ayzen1988 的回复:

UPDATE 库存表 a,
(
SELECT 编码,SUM(数量)数量 FROM
(
SELECT 编码,数量 FROM 采购入库表
UNION ALL
SELECT 编码,数量 FROM 盘存入库表
UNION ALL
SELECT 编码,-数量 FROM 销售出库表
UNION ALL
SELECT 编码,-数量 FROM 调拨出库表
UNION ALL
SELECT 编码,-数量 FROM 盘亏出库表
)t GROUP BY t.编码
)b SET a.数量 = b.数量
WHERE a.编码 = b.编码 AND a.数量 != b.数量;

好的 谢谢
ayzen1988 2019-01-31
  • 打赏
  • 举报
回复

UPDATE 库存表 a,
(
	SELECT 编码,SUM(数量)数量 FROM
	(
		SELECT 编码,数量 FROM 采购入库表
		UNION ALL
		SELECT 编码,数量 FROM 盘存入库表
		UNION ALL
		SELECT 编码,-数量 FROM 销售出库表
		UNION ALL
		SELECT 编码,-数量 FROM 调拨出库表
		UNION ALL
		SELECT 编码,-数量 FROM 盘亏出库表
	)t GROUP BY t.编码
)b SET a.数量 = b.数量 
WHERE a.编码 = b.编码 AND a.数量 != b.数量;

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧