Ik heb een SQL probleem waar ik al even op zit te broeden.
Ik heb twee tabellen per huurder, één tabel met schulden en 1 tabel met betalingen. Per boekjaar/periode combinatie komen betalingen binnen en worden schulden geboekt, bijv. de huur voor april.
Nu wil ik per periode de betalingsachterstanden kunnen uitrekenen, daarvoor heb ik de volgende query:
Probleem met deze query is dat bij deze tabellen:
het saldo van periode 3 goed geteld wordt, te weten 0, maar voor periode 4 de 100 van betaald twee keer gerekend wordt (door de left join denk ik) en er dus een tekort is van 25 ipv 125.
Hoe krijg ik deze berekening goed, zodat de optelling buiten de join gebeurt?
aanvullende info:
Database = Firebird 2.0
De structuur van de tabellen is niet aanpasbaar, ik heb het zo gekregen en zal het er mee moeten doen.
Ik heb twee tabellen per huurder, één tabel met schulden en 1 tabel met betalingen. Per boekjaar/periode combinatie komen betalingen binnen en worden schulden geboekt, bijv. de huur voor april.
Nu wil ik per periode de betalingsachterstanden kunnen uitrekenen, daarvoor heb ik de volgende query:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| select t.boekjaar, t.periode, (coalesce(sum(t.te_betalen),0) - coalesce(sum(b.betaald),0)) as tekort from fin_te_betalen t left join fin_betaald b on (b.contract_id = t.contract_id AND b.boekjaar = t.boekjaar AND b.periode = t.periode) where t.contract_id = :nummer AND t.verwerkt <> 'T' group by t.boekjaar, t.periode |
Probleem met deze query is dat bij deze tabellen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| fin_te_betalen: boekjaar periode te_betalen =========================== 2007 3 200 2007 4 200 2007 4 25 fin_betaald: boekjaar periode betaald ======================== 2007 3 200 2007 4 100 |
het saldo van periode 3 goed geteld wordt, te weten 0, maar voor periode 4 de 100 van betaald twee keer gerekend wordt (door de left join denk ik) en er dus een tekort is van 25 ipv 125.
Hoe krijg ik deze berekening goed, zodat de optelling buiten de join gebeurt?
aanvullende info:
Database = Firebird 2.0
De structuur van de tabellen is niet aanpasbaar, ik heb het zo gekregen en zal het er mee moeten doen.
[ Voor 8% gewijzigd door Pino op 11-04-2007 23:32 ]
"If you don't know where you are going, any road will take you there"