【发布时间】:2009-05-14 20:40:03
【问题描述】:
我有两个表:“Stock Master”和“Stock In”,如何在它们之间创建多对一关系? “Stock In”记录了许多不同日期和数量的不同库存,但“Stock Master”必须显示并将相同的库存及其数量合并为一个,并且必须具有先进先出的功能。
【问题讨论】:
我有两个表:“Stock Master”和“Stock In”,如何在它们之间创建多对一关系? “Stock In”记录了许多不同日期和数量的不同库存,但“Stock Master”必须显示并将相同的库存及其数量合并为一个,并且必须具有先进先出的功能。
【问题讨论】:
听起来多对一并不是你真正需要的。
如果我理解正确,您的库存会在不同时间进入不同类型。您想记录收到的货物,您想查看您有多少特定类型的货物,并且您希望能够识别最早收到的批次,以便您可以优先考虑运送。
大大简化了,您只需要一张记录已接收货物的表格,其中包含一个接收时间和日期列,您可以调用 WHERE 子句来确定哪个条目是最旧的,因此应该发货。
您不需要这样的表格来汇总库存(暂时忽略物化视图等选项)。只需对数量列求和;按产品类型分组。
【讨论】:
如果您想在 Postgresql 中创建一个视图(就像您对 JosefAssad 的建议所做的评论一样),就像在几乎任何其他 SQL 数据库中一样,请使用以下内容:
CREATE VIEW Stockmaster (prodid, total)
AS SELECT prodid, SUM(quantity)
FROM Stockin
GROUP BY prodid
【讨论】:
除非我在这里遗漏了什么,否则您可以使用适当的主键/外键关系来处理这个问题。
【讨论】: