我有一个MySQL数据库三个相关表:SUM()的多个值相关表
- inventory_items定义仓库物品的种类
- inventory_transactions定义广告的添加或删除 数量
- 的位置上确定的位置说库存
Inventory_transactions有许多存储在给定inventory_item如何添加或删除一个quantity_offset从给定的位置。
我有以下查询,它将获得global_quantity(给定inventory_item_id的所有quantity_offsets的总和)以及location_quantity,只要知道位置ID,它就可以为特定位置执行相同的操作。
SELECT sku, name, SUM(quantity_offset) AS global_quantity,
(
SELECT SUM(quantity_offset)
FROM inventory_transactions
WHERE inventory_items.inventory_item_id = inventory_transactions.inventory_item_id AND inventory_transactions.location_id = 1
) AS location_quantity
FROM inventory_items
JOIN inventory_transactions ON inventory_items.inventory_item_id = inventory_transactions.inventory_item_id
GROUP BY sku
我想用被添加到每个位置的列结束了,所以结果可能有值,例如:
sku, name, global_quantity, denver_quantity, dallas_quantity, ft_wayne_quantity
我的回退是要做到这一点对个人inventory_item页面(当我就知道库存物品,可以通过定位组),但能做到在一个单一的查询,并把它全部纳入一个表将是非常巨大的。
起初,我以为我可以通过迭代子查询,但无法设置列名(AS)编程。
非常感谢您提供任何帮助。
谢谢!基于我知道查询运行前的位置数(但不是在写入时)的事实,我想我会尝试在应用程序接触数据库之前生成SELECT。在select中添加可变数量的条件和应该很好。 – 2013-02-25 17:36:19