【发布时间】:2018-01-24 14:22:44
【问题描述】:
我正在尝试生成一份报告,该报告从以下数据库中计算保证金。问题是产品的成本(存在于 purchase_order_products 表中)可能会发生变化。
id 为 4022 的产品在 2017-06-08 的成本是 1110,但在 2017-07-25 的成本是 1094。这令人困惑。我无法获得所售每种产品的确切成本。
我编写了一个 PHP 算法,它遍历所有订单和采购订单,并使用最旧的成本到最新的成本。但该算法的时间复杂度非常高。这可以仅使用 mysql 查询来完成吗?
请检查以下场景:
公司在第 1 天为产品 X 创建了一个采购订单:数量 3,成本 10。
客户购买了 2 件产品 X 售价:第 1 天 12 件(库存中仍有 1 件商品,成本为 10)
公司在第 2 天为产品 X 创建了采购订单:数量 4,成本 9。
客户在第 2 天购买了 3 件产品 X 售价:12 件
客户在第 3 天购买了 2 件产品 X 售价:12 件
公司在第 3 天为产品 X 创建了采购订单:数量 2,成本 11。
客户在第 3 天购买了 2 件产品 X 售价:12 件
报告:
第 1 天: 以 12 的价格售出 2 个产品 X,成本 10,利润:2 * (12 - 10)
第 2 天: 以 12 的价格售出 3 个产品 X,1 件商品的成本为 10,2 件商品的成本为 9,
利润:1 * (12 - 10) + 2 * (12 - 9)
第 3 天: 以 12 的价格售出 2 个产品 X,成本 9,利润:2 * (12 - 9)
以 12 的价格售出 2 个产品 X,成本 11,利润:2 * (12 - 11)
因此,新销售产品的利润是根据其相应的成本计算的。希望你明白我的意思。
数据库中的 4 个产品
产品 上述产品的采购订单
【问题讨论】:
-
你为什么使用最旧的成本?只是想更好地了解您在此处寻找的确切内容。
-
我已经更新了这个问题。请检查场景。
-
好的,这确实更清楚了。您的库存记录是否在购买后从 purchase_order_products 表中删除?
-
这只是一厢情愿,我认为这可以通过任何一种方式进行查询。我会试着把一些东西放在一起。
-
这不是问题的症结所在:“产品 X 在 Y 天的成本是多少?”如果你能有效地发现这个价值,其余的难道不是“微不足道的”吗?如果是,那么我将解决这个问题。如果不是,请详细说明。