MySQL根据订单商品的不同分类对所有订单进行商品清算

时间:2015-12-22 17:46:18

标签: mysql join sum

如果我的问题不是很具描述性,我很抱歉。当我得到更好的想法时会更新。

我想通过对其订单项进行分类来创建包含SUM的订单总计的SQL。

为了简单起见,我已经删除了我在此处加载的架构的版本:http://sqlfiddle.com/#!9/8eb9a/1。我的表结构:

  • 订单:ID,总计
  • order_items :id,order_id,data

每个订单商品都有一个数据字段,用于将订单商品分类到特定类别。可以是例如" Automotive"," DSA",...或null。现在我想通过每个分类器的SUM(orders.total)。如果订单商品符合"汽车"分类器我想将订单总数添加到该分类器中。如果订单有另一个项目,例如" DSA"我想将订单总数添加到该分类器中。

我尝试运行此SQL,但这不是正确的,因为如果订单包含多个具有相同分类器的订单商品,则会为该分类器添加多个订单总计(LEFT JOIN)。

select OI.data, SUM(O.total)
from order_items OI 
left join orders O on O.id=OI.order_id
group by data

我想将每个订单的订单总数仅添加到每个不同的订单商品分类器。

您可以在此SQL Fiddle http://sqlfiddle.com/#!9/8eb9a/1

中看到该示例

1 个答案:

答案 0 :(得分:2)

您希望根据您的描述添加不同的行:

select OI.data, SUM(O.total)
from (SELECT DISTINCT order_id,data FROM order_items) OI 
left join orders O on O.id=OI.order_id
group by data;