1

各注文の合計価格を引き出すときにうまく機能する次のクエリがあります(stackoverflowコミュニティに感謝します):

SELECT sum((ordered_items.price + ordered_items.vat) * ordered_items.qty) + orders.postage_price + orders.postage_vat as total_price
FROM orders
JOIN ordered_items
ON orders.id_orders = ordered_items.order_id
GROUP BY orders.id_orders 

ただし、合計したすべての注文の合計額も引き出したいと思います。GROUP BYを削除しようとしましたが、間違った価格が返されます。私はそれがすべてのアイテムを正しく合計していると思いました、しかしそれからただ1つの郵便料金を追加します。

  • Ordered_items-注文されたすべてのアイテムが含まれます(複数の行が存在する可能性があります)
  • 注文-注文の送料が含まれます(ここでは注文ごとに1行のみになります)

助けてくれてありがとう。

4

1 に答える 1

2

何かが足りないかもしれませんが、これをサブクエリに入れて、すべての注文の合計を取得することはできません。

SELECT sum(total_price) TotalAllOrders
FROM
(
  SELECT sum((ordered_items.price + ordered_items.vat) * ordered_items.qty) 
         + orders.postage_price + orders.postage_vat as total_price
  FROM orders
  JOIN ordered_items
    ON orders.id_orders = ordered_items.order_id
  GROUP BY orders.id_orders 
) src ;

group by修飾子WITH ROLLUPを使用して、合計と注文ごとの合計の両方を取得することもできます。

  SELECT sum((ordered_items.price + ordered_items.vat) * ordered_items.qty) 
         + orders.postage_price + orders.postage_vat as total_price
  FROM orders
  JOIN ordered_items
    ON orders.id_orders = ordered_items.order_id
  GROUP BY orders.id_orders 
    WITH ROLLUP ;
于 2012-12-22T11:25:03.713 に答える