Hello All, Tables: # relevant fields invitations: donation_pledge, paid (boolean), currency_id currencies: code
I am trying to subtract the paid amounts from the amounts pledged using a subquery in the FROM clause but am having problems and am going blind. Plus, My SQL is weak at present. I was hoping a SQL ninja could have a look for me and tell me where I'm going wrong. I hope the following formats nicely for you to see what I've done .... This shows the amounts pledged grouped by (currency) code SELECT SUM(i.donation_pledge), c.code FROM invitations i LEFT JOIN currencies c ON i.currency_id = c.id WHERE i.meeting_id = 934311021 GROUP BY c.code; +------------------------+------+ | sum(i.donation_pledge) | code | +------------------------+------+ | 11170 | BRL | | 2997 | EUR | +------------------------+------+ This shows the amounts paid grouped by (currency) code SELECT SUM(i.donation_pledge), c.code FROM invitations i LEFT JOIN currencies c ON i.currency_id = c.id WHERE i.meeting_id = 934311021 AND paid = true GROUP BY c.code; +------------------------+------+ | sum(i.donation_pledge) | code | +------------------------+------+ | 70 | BRL | | 999 | EUR | +------------------------+------+ And this is supposed to show the amounts outstanding but it has doubled the values and subtracted 70 from each each value (the BRL currency code amount) SELECT sum(donation_pledge) - paid_donation_pledge FROM (SELECT i2.meeting_id, sum(donation_pledge) AS paid_donation_pledge FROM invitations i2 LEFT JOIN currencies c2 ON i2.currency_id = c2.id WHERE i2.meeting_id = 934311021 AND i2.paid = true GROUP BY c2.code ) AS i2 LEFT JOIN invitations i ON i2.meeting_id = i.meeting_id LEFT JOIN currencies c ON i.currency_id = c.id GROUP BY c.code; +---------------------------------------------+ | sum(donation_pledge) - paid_donation_pledge | +---------------------------------------------+ | 22270 | | 5924 | +---------------------------------------------+ Many thanks in advance -ants