1
我正在爲經營店中店的朋友構建一個簿記應用程序。基本上,每個產品都由賣家擁有。將交易訂單行拆分爲兩類
他們想要一個概述,他們可以看到交易中多少錢支付給他們的產品(賣方1擁有)以及多少錢支付給其他產品(seller!= 1)。
我嘗試以下查詢:
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
不幸的是,這只是返回一個交易,而不是所有的,它不要麼返回價格的正確總和:
在用於交易77,SUM(o1.price)
SHO的值應該是4.5,而SUM(o2.price)
應該是0.95。 SUM(orderline.price)
的值是正確的。
我想反過來得到所有的交易,然後是賣方1擁有的產品和賣方擁有的產品價值的總價值,價值!= 1(當然,產品應該是交易的一部分)。
這似乎是工作。爲什麼我需要按交易ID *和*交易日期進行分組? –
如果'sum,avg'函數(如使用這些函數)必須在每個組中按列使用。 – Sonsuz