我有一個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