2017-10-04 5 views
1

私は請求書の合計を計算するために私の質問に何かがないと思います。次のコードはorder_idの特定の範囲で行われたすべての注文を表示し、正しく計算しますが、order_idを重複させたくないので、個々のitem_idで分割するのではなく、すべてのorder_idを1行に表示します。質問のグループ内の同様の情報を組み合わせる

select order_details.order_id, order_details.item_id, items.unit_price * 
order_details.order_qty as itemtotal 
from order_details 
join items on 
order_details.item_id = items.item_id 
where order_id >= 400 and order_id <= 700 
group by order_details.order_id, order_details.item_id 
order by order_id asc; 

Query Result

私はちょうどそれが理にかなっている場合、私は代わりに購入した特定の項目の合計の一行に全順序を計算することができるようにORDER_IDの一緒にグループ化する方法を把握する必要があります。

+0

あなたのクエリは、実際に2つのテーブルを呼び出します。結果にitem_idは必要ないのですか?最終結果がどのように見えるかを簡単に表示できますか? – Ben

答えて

1

ORDER_IDあなたがのitem_idなどのために合計として集計関数() 、最終的にGROUP_CONCAT()を使用する必要があるためにあなたが合計が必要な場合:ORDER_DETAILSとアイテム:

select 
     order_details.order_id 
    , group_concat(order_details.item_id) ids 
    , sum(items.unit_price * order_details.order_qty) as itemtotal 
    from order_details 
    join items on 
    order_details.item_id = items.item_id 
    where order_id >= 400 and order_id <= 700 
    group by order_details.order_id 
    order by order_id asc; 
関連する問題