【发布时间】:2012-09-05 00:16:48
【问题描述】:
我有四张桌子person,loan,ca,payments
我想获取所有付款金额和现金垫款金额的总和,这些金额与从特定日期加入的人的贷款具有相同的 ID。
这是我的代码,但总和计算不正确:
SELECT pd.*,
l.total_loan_amount,
sum(c.ca_total_amount) AS ctot,
sum(p.payment_amount)
FROM personal_data pd
LEFT JOIN loans l
ON pd.id_personal_data = l.id_personal_data
LEFT JOIN ca c
ON l.id_loan = c.id_loan
LEFT JOIN payments p
ON l.id_loan = p.id_loan
WHERE l.loan_date = curDate()
AND (
c.ca_date = curDate()
OR c.ca_date IS NULL
)
AND (
p.payment_date = curDate()
OR p.payment_date IS NULL
)
GROUP BY pd.id_personal_data
【问题讨论】:
-
l.loan_date 是否为空?代码看起来不错...
-
您是否收到任何错误或输出错误?
-
输出错误...我手动计算了实际数据..它与输出不一样
-
如果在我的 where 条件下没有付款或预付现金,我会捕获 null 值..
-
请注意,通常会 GROUP BY all SELECT 中的未聚合列。