拆分交易订单行分为两类

时间:2016-02-20 20:25:13

标签: mysql sql

我正在为一家经营店中店的朋友建立一个簿记申请表。基本上,每件产品都归卖家所有。

他们想要一个概述,他们可以看到交易中为他们的产品支付了多少钱的价值(由卖方1拥有)以及其他产品有多少钱(卖家!= 1)。

这是ERD:ERD

我尝试了以下查询:

SELECT transaction.id, SUM(orderline.count), SUM(orderline.price), SUM(o1.price), SUM(o2.price), transaction.date
FROM transaction
JOIN orderline
  ON orderline.transaction_id = transaction.id
JOIN product
  ON product.barcode = orderline.product_barcode
JOIN orderline o1
  ON o1.transaction_id = transaction.id AND o1.product_barcode IN (SELECT barcode FROM product WHERE seller_id = 1)
JOIN orderline o2
  ON o2.transaction_id = transaction.id AND o2.product_barcode IN (SELECT barcode FROM product WHERE seller_id != 1)
GROUP BY transaction.id

不幸的是,这只返回一个事务而不是全部,并且它也没有返回正确的价格总和:

Result

在事务77中,SUM(o1.price)的值应为4.5,而SUM(o2.price)的值应为0.95。 SUM(orderline.price)的值是正确的。

我希望获得所有交易,然后获得卖方1拥有的产品的总价值,价值和卖方拥有的产品价值!= 1(产品应该是交易的一部分,当然)。

1 个答案:

答案 0 :(得分:1)

SELECT TRANSACTION.id,
   Sum(orderline.count), 
   Sum(orderline.price),
   Sum( case when product.seller_id = 1 then  orderline.price else 0 end ), 
   Sum( case when product.seller_id <> 1 then  orderline.price else 0 end), 
   TRANSACTION.date 

FROM TRANSACTION        加入订单          ON orderline.transaction_id = TRANSACTION.id        加入产品          ON product.barcode = orderline.product_barcode GROUP BY TRANSACTION.id,TRANSACTION.date