Reputation: 31
SELECT
`loanac`.`id`,
`loanac`.`name`,
`loanac`.`lacc`,
SUM(`loantrans`.`in`) as totalin,
SUM(`loantrans`.`out`) as totalout
FROM loanac, loantrans
WHERE `loanac`.`lacc`=`loantrans`.`account`
GROUP BY `loanac`.`lacc`
Here is my query above which is working fine to show all accounts, BUT I need to find accounts where SUM(out) > SUM (in) instead of all accounts
I've tried to add condition using AND but its showing error, can anyone help?
Upvotes: 0
Views: 64
Reputation: 204
Try using having
SELECT loanac.id,
loanac.name,
loanac.lacc,
loanac.phone,
SUM(loantrans.in) as totalin,
SUM(loantrans.out) as totalout
FROM loanac, loantrans
WHERE loanac.lacc=loantrans.account
GROUP BY loanac.lacc
HAVING SUM(out) > SUM (in)
Upvotes: 1
Reputation: 3732
The way to do criteria on aggregate functions (like SUM or COUNT) is HAVING, not WHERE
SELECT loanac.id, loanac.name, loanac.lacc, loanac.phone,
SUM(loantrans.in) as totalin, SUM(loantrans.out) as totalout
FROM loanac,
loantrans
WHERE loanac.lacc=loantrans.account
GROUP BY loanac.lacc
HAVING SUM(loantrans.out) > SUM(loantrans.in)
Upvotes: 4