【发布时间】:2016-12-12 13:09:11
【问题描述】:
我无法理解有关在 SQL Server 中管理库存之类的概念。
我需要确保处理 3 个用例:
- 添加新库存
- 移除库存
- 将库存从一个位置移动到另一个位置
我试图弄清楚下表是否真的足以跟踪上述 3 笔交易。
这是一个简单的表结构:
-
Inventory: (Id, LocationId, ProductId, 数量) -
Product: (Id, Name) -
Location: (Id, Name)
有了这些数据,我想弄清楚几件事:
对于单个产品,我能否看到可用的总计?
SELECT p.Name, SUM(i.Quantity) AS QuantityOnHand
FROM Inventory i
INNER JOIN Product p ON i.ProductId = p.Id
WHERE i.ProductId = 1
GROUP BY p.Name
对于单个产品,我能否查看位置 A 和位置 B 有多少可用?
SELECT p.Name, SUM(i.Quantity) AS QuantityOnHand
FROM Inventory i
INNER JOIN Product p ON i.ProductId = p.Id
WHERE i.ProductId = 1 AND i.LocationId = 3
GROUP BY p.Name
我能否跟踪入住和退房的历史记录?
这是我开始感到困惑的部分......
这是值得有一个库存标题表的地方吗?或者,由于采购订单和销售订单是用户签入和签出产品的主要方式,因此不需要 InventoryHeader 表。
我的主要担忧是我害怕在没有任何这些交易记录的情况下不断更新 Inventory 表上的 Quantities。此日志通常保存在采购订单(签入)和销售订单(签出)中吗?
我只是觉得如果我使用 InventoryHeader 和 InventoryDetail 方法,InventoryDetail 表中将包含大量记录,如果不逐个检查,我将无法查询当前有多少个项目InventoryDetail 做 SUM(Credits) - SUM(Debits)
【问题讨论】:
标签: sql sql-server