2017-10-04 22 views
1

我想我在我的查詢中缺少一些東西來計算髮票總數。下面的代碼可以顯示在一定範圍的order_id之間進行的所有訂單,並且可以正確計算,但是我希望所有order_id都顯示在一行中,而不是由單獨的item_id分割,因爲我不想重複order_id。結合像一個組中的信息查詢

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

您所查詢的實際調用兩個表:ORDER_DETAILS和物品。你不想在結果中使用item_id嗎?你能提供一個你想要的最終結果的快速指示嗎? – Ben

回答

1

如果您需要爲總ORDER_ID你應該ITEM_ID如使用聚合函數如SUM() 並最終GROUP_CONCAT():

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;