【发布时间】:2016-03-29 01:24:50
【问题描述】:
如果我的问题描述性不强,我很抱歉。当我有更好的想法时会更新。
我想创建 SUM 的我的订单总额按其订单项目分类的 SQL。
为了简单起见,我制作了我在此处加载的架构的精简版本:http://sqlfiddle.com/#!9/8eb9a/1。我的表结构:
- 订单:id、总数
- order_items:id、order_id、数据
每个订单项目都有一个数据字段,用于将订单项目分类到某个类别。例如,可以是“汽车”、“DSA”、... 或 null。现在我想对每个分类器求和(orders.total)。如果订单项适合“汽车”分类器,我想将订单总数添加到该分类器中。如果订单有另一个项目,例如“DSA”,我想将订单的总数也添加到该分类器中。
我尝试运行此 SQL,但这并不正确,因为如果订单有多个具有相同分类器的订单项目,它会为该分类器添加多个订单的总计(左连接)...
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 中查看示例
【问题讨论】:
-
你能发布一些示例数据和想要的结果吗?
-
为什么需要
LEFT JOIN?order_item可以引用不存在的order吗? -
@Barmar 不,它不能......我已经提到了一些数据的 SQL fiddle......
-
那么你应该使用
INNER JOIN。但我认为这对您的问题没有影响。 -
sqlfiddle 显示数据,但没有显示所需的结果。