我有兩個表(orders,order_lines)和一對多關係。訂單表中將有一行,order_lines表將爲每個附加到訂單的產品分配一行。MYSQL查詢將不同表中的多個列相加
訂單
+----------+-------------+---------------+
|order_num | total_order | shipping_total|
+----------+-------------+---------------+
| 12345 | 75.00 | 15.00 |
+----------+-------------+---------------+
ORDER_LINES
+----------+-------------+-------+
| order_num| volume | price |
+----------+-------------+-------+
| 12345 |10 |25.00 |
+----------+-------------+-------+
| 12345 |20 |25.00 |
+----------+-------------+-------+
| 12345 |20 |25.00 |
+----------+-------------+-------+
我想總結的total_order在Orders表& shipping_total列和體積&價格列在表ORDER_LINES。
查詢目前沒有工作:
SELECT b_orders.bill_country, b_orders.ship_country
, SUM(volume) AS v, SUM(price) AS pt
, SUM(shipping_total) AS st, SUM(total_order) AS tot_o
FROM b_orders
JOIN b_order_lines
ON b_orders.order_num = b_order_lines.order_num
WHERE DATE(b_orders.order_date) BETWEEN '2012-04-02' AND '2012-04-06'
AND ship_country = 'USA'
AND b_order_lines.price > 0;
該查詢返回錯誤的值。我有點知道爲什麼,但不知道如何編寫正確的查詢...請幫助。
你想要總計還是公關。訂單或公關。國家? – barsju 2012-04-06 20:40:52
由連接生成的中間表將創建三行,每行對total_order和shipping_total具有相同的值。因此,您的SUM()將對這些數量進行三重計數,但它會爲您提供正確的音量總和。把這樣的價格加起來對我來說沒有意義。通常,您不希望在同一查詢中通過頭表(ORDERS)和詳細表(ORDER_LINES)進行SUM()。 – 2012-04-06 20:47:29
啊,我看到價格就是我所說的extended_price。這是我看不到的價格*單位價格欄。 – 2012-04-06 20:49:29