通过查询将组中的信息组合在一起

时间:2017-10-04 16:40:30

标签: mysql sql

我想我在查询中遗漏了一些用于计算发票总额的内容。以下代码用于显示在特定范围的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组合在一起,这样我就可以计算单行总订单,而不是购买特定商品的总数,如果有意义的话。

1 个答案:

答案 0 :(得分:1)

如果你需要order_id的总和,你应该使用聚合函数作为sum() 最后是item_id的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;