我在 gfee 和 netpay 上得到的值错误。
SELECT s.id, s.name, c.name AS course_name,
s.open_bal AS open_balance, sum(i.amount) AS gross_fee,
sum(i.discount) AS discount, sum(i.amount) - sum(i.discount) AS net_payable,
SUM(r.reg_fee+r.tut_fee+r.other_fee) AS net_recieved,
(sum(i.amount) - sum(i.discount)) - SUM(r.reg_fee+r.tut_fee+r.other_fee) AS balance_due
FROM subscribers s
INNER JOIN courses c on c.id = s.course_id
LEFT JOIN invoices i on i.student_id = s.id
LEFT JOIN recipts r on r.student_id = s.id
GROUP BY s.id;
为什么会发生这种情况?
最佳答案
SELECT s.id
, s.name
, c.name AS course_name
, s.open_bal AS open_balance
, igroup.gross_fee
, igroup.discount
, igroup.net_payableinvoices
, rgroup.net_recieved
, igroup.net_payableinvoices - rgroup.net_recieved
AS balance_due
FROM students s
INNER JOIN courses c
on c.id = s.course_id
LEFT JOIN
( SELECT i.student_id
, SUM(i.amount) AS gross_fee
, SUM(i.discount) AS discount
, SUM(i.amount) - sum(i.discount)
AS net_payableinvoices
FROM invoices i
GROUP BY i.student_id
) AS igroup
ON igroup.student_id = s.id
LEFT JOIN
( SELECT r.student_id
, SUM(r.reg_fee+r.tut_fee+r.other_fee)
AS net_recieved
FROM recipts r
GROUP BY r.student_id
) AS rgroup
ON rgroup.student_id = s.id
;
关于mysql - mysql INNER JOIN 上的值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5650088/