mysql - 如何计算 2 个表格中的库存
问题描述
我有这样的第一张桌子(tbl_med)
id_med name stock
1 abc 10
2 bcd 15
3 efd 11
像这样的第二个表(tbl_trans)
id_trans id_med qty
1 1 4
2 1 2
3 2 3
如何计算第一张表中的最后库存或剩余库存?我试过了,但没有显示 id_med 3 的剩余库存
SELECT tbl_med.stock, tbl_med.id_med, tbl_med.stock - SUM(tbl_trans.qty) AS stock_left FROM tbl_med
JOIN tbl_trans ON tbl_med.id_med= tbl_trans.id_med
GROUP BY tbl_med.id_med
解决方案
我认为你只需要coalesce()
和left join
:
SELECT m.stock, m.id_med, m.stock - COALESCE(SUM(t.qty), 0) AS stock_left
FROM tbl_med m LEFT JOIN
tbl_trans t
ON m.id_med = t.id_med
GROUP BY m.id_med;
SELECT
请注意,通常在 SQL中包含非键的未聚合列GROUP BY
是错误的。但是,如果GROUP BY
具有表的主键,它就可以正常工作。我假设id_med
是 的主键tbl_med
。
推荐阅读
- apache-flink - 当 writeToSocket 什么都没有发生
- c++ - 如何将此代码转换为“for”循环?
- c# - 打印到财务热敏打印机问题
- python - 单个图像将显示,但多个图像不会使用 Python Turtle 库
- javascript - javascript中的日期与页面源不同
- java - 如何以 Media Recorder 不支持的格式进行编码?
- python - 使用 tkinter 按钮更改没有函数的变量的值
- ruby-on-rails - Rspec 引发错误未按预期工作,需要正确的语法
- laravel - 如何从 Laravel Eloquent ModelObserver 强制更新而不是允许它创建新记录
- node.js - “路径”参数必须是字符串类型。接收到的类型未定义 - Ionic 4 - 仅限 Windows