受注数から受け取った数量を引いた値の取得に問題があります。ジョインとSUMのトラブル()
テーブルの基本的なバージョンは、そこで、基本的私はバックオーダーに残っているどのように多くのpartid 12345
のために知ってほしい
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 | in_order
12345 | 70
(+ 40 100)のようになります - (40 + 10 + 20)
私の試みでの問題は、私が注文数量を合計しようとしたとき、私は* 100 3を得たということでしたすべての受信+ 40のための1 order_part
が直接注文する準備ができましたorder_reception_part
エキストラ情報のステータス1 =、ステータス2 =順序にリンクされていないので、3 =
を受信し、私は私がのために十分にそれを説明している願っていますそうでなければ、私に追加情報を求めてください。
次のクエリでは、SUM()
がorp.quantity
である必要がありますが、結果は受信ごとに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