Ik ben nu al een tijdje aan het prutsen met het volgende probleem:
De database (de echte bevat uiteraard meer items)
Het mag duidelijk zijn dat dit een vrij simpele boekhoudapplicatie moet worden voor een aantal panden.
Als ik nu de volgende query gebruik:
Zou ik verwachten dat ik 2 bewoners te pakken zou krijgen, met dus 2 stuks servicekosten dus:
Wat mij alleen elke keer weer verbaast is dat er niet 2, maar 3 items uitgevoerd worden; dus 1x een dubbele Piet/Klaas. In dit geval makkelijk op te lossen door er een select distinct query van te maken, maar problematischer bij een group-by statement (om dus uiteindelijk alle servicekosten bijelkaar op te tellen.)
De database (de echte bevat uiteraard meer items)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| INSERT INTO `huizen` (`id`, `straat`, `nummer`, `postcode`, `stad`) VALUES
('1', 'A-straat', '2', '1234ab', 'Groningen');
INSERT INTO `bewoner` (`huisid`, `naam`, aanhef, `kalehuur`, `verdeelsleutel`) VALUES
('1', 'Piet', 'Geachte heer Piet', '123', '50'),
('1', 'Klaas', 'Geachte heer Klaas', '123', '50');
insert into categorie (catid, omschrijving) values
('1', 'energie'),
('2', 'water'),
('3', 'gemeente');
insert into service (huisid, omschrijving, catid, bedrag, maandbedrag, jaar) values
('1', 'gas en licht', '1', '33126', '1', '2004'), |
Het mag duidelijk zijn dat dit een vrij simpele boekhoudapplicatie moet worden voor een aantal panden.
Als ik nu de volgende query gebruik:
code:
1
2
3
| select huizen.straat, bewoner.naam, service.bedrag from huizen, service, bewoner where huizen.id=service.huisid and huizen.id=bewoner.huisid and service.jaar='2004' and huizen.id=1 |
Zou ik verwachten dat ik 2 bewoners te pakken zou krijgen, met dus 2 stuks servicekosten dus:
code:
1
2
| A-Straat | Piet | 33126 A-Straat | Klaas | 33126 |
Wat mij alleen elke keer weer verbaast is dat er niet 2, maar 3 items uitgevoerd worden; dus 1x een dubbele Piet/Klaas. In dit geval makkelijk op te lossen door er een select distinct query van te maken, maar problematischer bij een group-by statement (om dus uiteindelijk alle servicekosten bijelkaar op te tellen.)