我需要在MySQL中为这个查询创建JOIN语法:
SELECT
TblSupplier.SupplierName AS SupplierName,
(SUM(TblBuy.TotalBuy) - SUM(TblReturn.TotalReturn)) AS Total
(SUM(TblPayment.TotalPaymentToday) - SUM(TblReturnItem.TotalReturnToday)) AS TotalPayment,
((SUM(TblBuy.TotalBuy) - SUM(TblReturn.TotalReturn)) - (SUM(TblPayment.TotalPaymentToday) - SUM(TblReturnItem.TotalReturnToday))) AS Balance
FROM ...
GROUP BY TblSupplier.ID
但我不知道怎么做......
我的问题示例:
INSERT INTO TableSupplier(ID,SupplierName)VALUES(1,'Company A'),(2,'Company B');
INSERT INTO TableBuy(ID,SupplierID,TotalBuy)VALUES (1,1,100), (2,1,200), (3,2,50), (4,2,100), (5,2,50);
INSERT INTO TablePayment(ID,BuyID,TotalPaymentToday)VALUES (1,1,50), (2,3,50);
INSERT INTO TableReturn(ID,SupplierID,TotalReturn)值 (1,1,20), (2,2,30), (3,2,10);
INSERT INTO TableReturnItem(ID,ReturnID,TotalReturnToday)VALUES (1,1,10), (2,2,30);
我按照这个例子,得到了这个结果:
的MySQL>选择
- > ts.SupplierName AS SupplierName,
- > (SUM(tb.TotalBuy) - SUM(tr.TotalReturn))AS总计,
- > (SUM(tp.TotalPaymentToday) - SUM(tri.TotalReturnToday))AS TotalPayment,
- > ((SUM(tb.TotalBuy) - SUM(tr.TotalReturn)) -
- > (SUM(tp.TotalPaymentToday) - SUM(tri.TotalReturnToday)))AS Balance
- >来自tableupplier ts
- >内部联接tablebuy tb on ts.id = tb.id
- >内部联接tablereturn tr on ts.id = tr.id
- >内部联接tablepayment tp on ts.id = tp.id
- >内部联接tablereturnitem tri on ts.id = tri.id
- > group by ts.id;
供应商名称|总计| TotalPayment |平衡
------------------------------------------------- <登记/> 公司A | 80 | 40 | 40
公司B | 170 | 20 | 150
我想要的结果是:
SupplierName |总计| TotalPayment |平衡
------------------------------------------------- <登记/> 公司A | 280 | 40 | 240
公司B | 160 | 20 | 140
答案 0 :(得分:0)
试试这个:
select
ts.SupplierName AS SupplierName,
(SUM(tb.TotalBuy) - SUM(tr.TotalReturn)) AS Total
(SUM(tp.TotalPaymentToday) - SUM(tri.TotalReturnToday)) AS TotalPayment,
((SUM(tb.TotalBuy) - SUM(tr.TotalReturn)) -
(SUM(tp.TotalPaymentToday) - SUM(tri.TotalReturnToday))) AS Balance
from tablesupplier ts
inner join tablebuy tb on ts.id=tb.supplierid
inner join tablereturn tr on ts.id=tr.supplierid
inner join tablepayment tp on tb.id=tp.buyid
inner join tablereturnitem tri on tr.id=tri.returnid
group by ts.id