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

时间:2019-01-23 15:32:54

标签: sql ms-access ms-access-2016

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

  • 聚会(party_id,类型,名称)
  • 购买(purchase_id,supplier_id,数量,费率,总计)
  • 付款(payment_id,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。

这是我建立关系的方式,是否应该修复关系? tables' relationship

1 个答案:

答案 0 :(得分:2)

您必须对表Party进行2个单独的分组:
第一个使用Purchase获得SUM的{​​{1}}
第二个与total一起获得Payments的{​​{1}}。
然后加入2个子查询并获得SUM

amount