MySQL与库存维护

MySQL与库存维护,mysql,Mysql,我有一个简单的程序来管理一些车辆的燃油发放状态 这包括以下表格 储存物品 tbl_车辆 存储\更新\库存 门店\更新\库存\详细信息 tbl_燃料 我使用了以下代码 渴望 但是代码生成以下输出 +------+ | qty | +------+ | 6750 | +------+ 我不明白可能出了什么问题。有人能帮我吗?您的查询的主要问题是,由于在tbl_fuel中有多行与库存更新详细信息表中的相同项目匹配,因此结果集中有多行被求和(因此结果大于预期)。要解决此问题,您需要在每个表中分别按项

我有一个简单的程序来管理一些车辆的燃油发放状态

这包括以下表格

储存物品 tbl_车辆 存储\更新\库存 门店\更新\库存\详细信息 tbl_燃料 我使用了以下代码 渴望 但是代码生成以下输出

+------+
| qty  |
+------+
| 6750 |
+------+

我不明白可能出了什么问题。有人能帮我吗?

您的查询的主要问题是,由于在
tbl_fuel
中有多行与库存更新详细信息表中的相同
项目匹配,因此结果集中有多行被求和(因此结果大于预期)。要解决此问题,您需要在每个表中分别按项进行求和,然后减去结果:

select susd.qty - tf.fuel_qty  as qty
from (select susd.item, sum(susd.qty) AS qty
      from store_update_stock_details susd
      join store_update_stock sus on sus.update_stock_id = susd.update_stock_id
      where sus.status = 1
      group by item) susd
join store_item si on susd.item = si.item_id
join (select item, sum(fuel_qty) AS fuel_qty
      from tbl_fuel
      group by item) tf on si.item_id=tf.item
输出:

qty
1525

@mcode用实际上是另一个问题的内容编辑答案是不合适的。相反,只需发布一个新问题,回到这个问题。我不理解燃料表。也许它可以/应该重新设计
+-------------------------+-----------------+------+-----+--------+
| update_stock_details_id | update_stock_id | item | qty | status |
+-------------------------+-----------------+------+-----+--------+
|                       1 |               1 |    1 | 900 |      1 |
|                       2 |               2 |    1 | 800 |      1 |
+-------------------------+-----------------+------+-----+--------+
+---------+------------+-------------+------+----------+
| fuel_id | vehicle_id | issued_date | item | fuel_qty |
+---------+------------+-------------+------+----------+
|       1 |          2 | 2019-09-25  |    1 |       50 |
|       2 |          2 | 2019-09-25  |    1 |       50 |
|       3 |         18 | 2019-09-26  |    1 |       25 |
|       4 |          2 | 2019-09-27  |    1 |       50 |
+---------+------------+-------------+------+----------+
select sum(store_update_stock_details.qty) - tbl_fuel.fuel_qty  as qty
            from store_update_stock_details
            inner join store_update_stock on store_update_stock_details.update_stock_id=store_update_stock.update_stock_id
           join store_item on store_update_stock_details.item=store_item.item_id
            join tbl_fuel on store_item.item_id=tbl_fuel.item
           where store_update_stock.status=1
           group by store_item.item_id
+------+
| qty  |
+------+
| 1525 |
+------+
+------+
| qty  |
+------+
| 6750 |
+------+
select susd.qty - tf.fuel_qty  as qty
from (select susd.item, sum(susd.qty) AS qty
      from store_update_stock_details susd
      join store_update_stock sus on sus.update_stock_id = susd.update_stock_id
      where sus.status = 1
      group by item) susd
join store_item si on susd.item = si.item_id
join (select item, sum(fuel_qty) AS fuel_qty
      from tbl_fuel
      group by item) tf on si.item_id=tf.item
qty
1525