次のクエリを検討してください。
$query = "
SELECT a_orders.id, a_orders.billing,
SUM(a_order_rows.quant_refunded*a_order_rows.price*((100-a_orders.discount)*.01)) as refund_total,
SUM(a_order_rows.quant*a_order_rows.price*((100-a_orders.discount)*.01)) as order_total
FROM a_order_rows JOIN a_orders
ON a_order_rows.order_id = a_orders.id
WHERE a_order_rows.quant_refunded > 0
GROUP BY a_orders.id, a_orders.billing
ORDER BY a_orders.id DESC
LIMIT 50";
SUM() の 2 つの使用法は、注文合計と返金された合計金額を集計しようとしています。quant_refunded フィールドが 0 でない場合、それらは正しく出力されます...たとえば、次のデータを取得します (各行が一意のアイテムであると仮定して、簡単にするために主キー、item_id を除く):
Table: a_order_rows
Fields: order_id, quant, quant_refunded
1, 1, 1
1, 2, 1
2, 1, 1
2, 1, 0
「順序 1」の場合、2 つの集計は異なり、期待どおりに動作します。しかし、「注文 2」の場合、2 つの数字は同じになります。両方の数字は、refund_total が期待するものです。quant_refunded が「0」の行が order_total 集計から除外されているようです。
うまくいけば、これは十分に徹底的に説明されています。さらに情報が必要な場合はお知らせください。修正します。ありがとう!