我需要计算 - 比方说 - 基于购买价格和日期(FIFO / LIFO)的商品价格。所以,假设我已经购买了这些产品:
首次购买的商品确定最终产品价格,因此ABC售出前3件商品的价格为100美元+,另外2件商品价格为80美元+。+ / p>
我现在需要的是一种缓存表,它应该是这样的:
SKU price max_qty
ABC 100 3
ABC 80 5
XYZ 120 5
XYZ 110 12
请注意,第三栏不包含购买数量,而是包含此价格所指数量的“上限”。这样我就可以通过max_qty >= basket_qty
上的简单JOIN快速估算4项ABC的卖价。这很重要,因为读取的内容比写入此表的内容要多得多。
我正在努力的是以性能和资源成本的方式生成这样的表。我无法以“每个sku查询”方式执行此操作,因为一次可能有很多记录需要更新。我尝试过使用MySQL变量;
SELECT
sku,
price,
@r := @r + qty AS max_qty
FROM
(SELECT @r := 0) AS r
JOIN
warehouse_items
GROUP BY
sku
ORDER BY
sku, date_in
此结果集将很容易插入到缓存表中,但@r不会为结果中的每个新sku重置。