Mysql使用求和条件左连接
我正在尝试创建一个报告,该报告将显示有未清帐户余额的客户,但我似乎无法使用左连接使其正常工作 我有3个表-客户、购买和付款,我试图显示总购买成本减去付款大于0的客户 到目前为止,我有以下疑问:Mysql使用求和条件左连接,mysql,sql,join,Mysql,Sql,Join,我正在尝试创建一个报告,该报告将显示有未清帐户余额的客户,但我似乎无法使用左连接使其正常工作 我有3个表-客户、购买和付款,我试图显示总购买成本减去付款大于0的客户 到目前为止,我有以下疑问: mysqli_query("SELECT customers.name as name, SUM(purchases.cost) as cost, SUM(payments.paymentamount) as payments FROM customers LEFT JOIN purchases ON
mysqli_query("SELECT customers.name as name, SUM(purchases.cost) as cost, SUM(payments.paymentamount) as payments FROM customers
LEFT JOIN purchases ON purchases.customerid = customers.id
LEFT JOIN payments ON payments.customerid = customers.id
WHERE (cost - payments) > 0
GROUP BY customers.id");
有人知道为什么这不起作用吗
谢谢你的帮助 您需要为每个
customerID
计算子查询中的每个总计,以避免错误的结果
SELECT a.*,
COALESCE(b.totalPurchase , 0) - COALESCE(c.totalPayment , 0) AS Balance
FROM customers a
LEFT JOIN
(
SELECT customerid, SUM(cost) totalPurchase
FROM purchases
GROUP BY customerid
) b ON a.ID = b.customerID
LEFT JOIN
(
SELECT customerid, SUM(paymentamount) totalPayment
FROM payments
GROUP BY customerid
) c ON a.ID = c.customerID
WHERE COALESCE(b.totalPurchase , 0) - COALESCE(c.totalPayment , 0) > 0
谢谢JW。但是,当我尝试使用while($row1=mysqli_fetch_assoc($q1))显示结果时,它几乎可以正常工作,然后$row1['totalPurchase']和$row1['totalPayment']都返回0。有什么想法吗?当客户没有
购买
表或付款
表的记录时,它将返回0
。你能提供样品记录吗<代码>:)谢谢。我不知道如何发布代码片段,但你是正确的-在很多情况下,客户总是会购买,但可能已经支付了任何款项。但是,我的报告显示,所有客户的购买和付款均为0,即使他们同时拥有这两个实例。谢谢看这个例子,它解决了演示问题!上面的答案在最初的选择中没有COALESCE(b.totalPurchase,0)totalPurchase和COALESCE(c.totalPayment,0)totalPayment。我把这些都加进去了,现在可以用了。谢谢你的帮助:)