我想顯示所有項目數量。但數量在不同的表。具有多個表和IF MySQL的SUM項目和數量
輸出示例:
Item Quantity
Item1 34
Item2 10
Item3 0
........
我有一個代碼,可以盤點數量但單項只。
SELECT SUM(ROUND(Quantity)) FROM(
SELECT
COALESCE(SUM(od.Quantity),0) as 'Quantity'
FROM sts as T1
LEFT JOIN orderset_details as od ON T1.OrdersetId = od.OrdersetId
WHERE od.ItemId = '4786'
UNION ALL
SELECT
COALESCE(SUM(od.Quantity),0) as 'Quantity'
FROM drs as T2
LEFT JOIN orderset_details as od ON T2.OrdersetId = od.OrdersetId
WHERE od.ItemId = '4786'
UNION ALL
SELECT
COALESCE(SUM(IF(r.AddsToStock = '1', od.Quantity, 0 - od.Quantity)),0) as 'Quantity'
FROM stockadjustment as T3
LEFT JOIN reason as r ON r.ReasonId = T3.ReasonId
LEFT JOIN orderset_details as od ON T3.OrdersetId = od.OrdersetId
WHERE od.ItemId = '4786'
UNION ALL
SELECT
COALESCE(SUM(IF(T4.OrdersetId = od.OrdersetId, 0 - od.Quantity, -1 * od.Quantity)),0) as 'Quantity'
FROM issueslip as T4
LEFT JOIN orderset_details as od ON T4.OrdersetId = od.OrdersetId
WHERE od.ItemId = '4786'
UNION ALL
SELECT
COALESCE(SUM(IF(T4.OrdersetId = od.OrdersetId, 0 - od.Quantity, -1 * od.Quantity)),0) as 'Quantity'
FROM invoice as T4
LEFT JOIN orderset_details as od ON T4.OrdersetId = od.OrdersetId
WHERE od.ItemId = '4786') as t
我如何能實現使用此代碼的項目?
表名items
和id爲ItemId
'LEFT JOIN x,其中x'是一樣的'INNER JOIN x' – Strawberry
如果你喜歡,可以考慮下列行爲這個簡單的兩步過程:1.如果您還沒有這樣做,提供適當的CREATE和INSERT語句(和/或sqlfiddle),以便我們可以更容易地複製問題。 2.如果您還沒有這樣做,請提供與步驟1中提供的信息相對應的所需結果集。 – Strawberry
@Strawberry對不起,我是MySQL的新手,雖然我已經使用了多年。這是我第一次遇到太多的連接。 –