执行 INNER JOIN 时查询返回错误值?

Query returning wrong value when doing an INNER JOIN?

我想加入三个表来计算某个 (party_id) 的余额 =(购买 - 付款):

从该 ID 购买的总金额 = 20,000,总付款金额 = 15,000,因此其余额应为 = 5,000。使用此代码后:

SELECT 
    ((sum(purchase.total)) - (sum(payments.amount))) AS Party_Balance 
FROM 
    Purchase 
INNER JOIN 
    Party 
    ON purchase.supplier_id = party.party_id 
INNER JOIN 
    Payments 
    ON party.party_id = payments.party_id 
WHERE 
    payments.party_id = enter_party_id;

输出不正确:1,000,245 而不是 5,000。

这是我建立关系的方式,有没有关系需要修复?

您必须对 table Party:
进行 2 个单独的分组 第一个用 Purchase 得到 total SUM
第二个 Payments 得到 amountSUM
然后加入2个子查询并得到 Party_Balance:

SELECT pur.party_id,  pur.total - pay.sumamount AS Party_Balance FROM (
  SELECT Party.party_id, SUM(Purchase.total) AS total
  FROM Party INNER JOIN Purchase ON Party.party_id = Purchase.supplier_id
  GROUP BY Party.party_id
) AS pur
INNER JOIN (
SELECT Party.party_id, SUM(amount) AS sumamount
  FROM Party INNER JOIN Payments ON Party.party_id = Payments.party_id
  GROUP BY Party.party_id
) AS pay
on pay.party_id = pur.party_id