我在檢索訂單數量減去收到的數量時遇到了問題。連接問題和SUM()
表的基本版本看起來像
order_main
id | status
1 | 2
2 | 1
3 | 3
4 | 2
order_part
id | partid | quantity | status | order_main_id
1 | 12345 | 100 | 2 | 1
2 | 23456 | 20 | 3 | 1
3 | 555 | 15 | 1 | 2
4 | 666 | 10 | 3 | 3
5 | 12345 | 40 | 2 | 4
order_reception
id | order_main_id
1 | 2
2 | 2
3 | 2
4 | 3
order_reception_part
id | partid | quantity | order_reception_id
1 | 12345 | 40 | 1
2 | 23456 | 20 | 1
3 | 12345 | 10 | 2
4 | 12345 | 20 | 3
5 | 666 | 10 | 4
所以基本上我想知道PARTID 12345
多少仍處於缺貨。 結果應該像
partid | in_order
12345 | 70
(100 + 40) - (40 + 10 + 20)
我嘗試的問題是,當我試圖總結我得到了3 * 100的訂單數量一個用於每個接收+ 40,因爲order_part
不直接鏈接到order_reception_part
額外的信息狀態1 =準備訂購,狀態2 =有序,3 =接收
我希望我已經解釋過它不夠好,你瞭解,否則請問我額外的信息。
下面的查詢將說明我的意思,我需要的orp.quantity
的SUM()
每個訂單,但結果會顯示100,每接待,但我只需要「100」 1周時間+ 80從其他命令。
SELECT om.id, op.quantity, orp.quantity
FROM order_main om
JOIN order_part op ON om.id = op.order_main_id
LEFT JOIN order_reception `or` ON om.id = or.order_main_id
LEFT JOIN order_reception_part orp ON or.id = orp.order_reception_id
WHERE op.partid = 12345
AND op.status = 2
TL; DR只是'SUM(DISTINCT your_primary_key_here)'。 –
我無法看到+80來自哪裏 – apokryfos
@apokryfos對不起,你應該是+40 – Bart