Ik ben bezig met een overzicht van bestellingen. Hiervoor haal ik bestellingen samen met de bestelregels uit de database met:
Dit geeft bijvoorbeeld de volgende output:
Nu wil ik graag 30 bestellingen uit de database halen. Een limit van 30 achter de query plakken gaat natuurlijk niet werken aangezien er dan 30 bestelregels uit de database worden gehaald.
Ik heb de query uitgebreid:
Dit is niet heel betrouwbaar en het probleem is: ik wil graag kunnen sorteren op bijvoorbeeld de naam van mensen die een bestelling hebben geplaatst en op andere kolommen. Hoe kan ik dit nu aanpakken? Ik ben in de veronderstelling dat eigenlijk alles wel door middel van 1 query uit een database is te halen. Is dit hier mogelijk of moet ik van elke bestelling de bestelregels met een extra query uit de database halen?
SQL:
1
2
3
4
5
6
7
8
9
10
11
| SELECT `bestellingen`.`naam`, `artikelen`.`titel`, `bestelregels`.`aantal`, `artikelen`.`prijs` FROM `bestellingen` Inner Join `bestelregels` ON `bestelregels`.`bestelID` = `bestellingen`.`ID` Inner Join `artikelen` ON `bestelregels`.`artikelID` = `artikelen`.`ID` |
Dit geeft bijvoorbeeld de volgende output:
| Naam | Artikel | Aantal | Prijs |
| Henk | Boormachine | 2 | 86 |
| Henk | Moersleutel | 1 | 4 |
| Henk | Schroevendraaier | 3 | 3 |
| Piet | Hamer | 1 | 2.2 |
| Klaas | Boormachine | 1 | 86 |
| Klaas | Andere boormachine | 2 | 72 |
Nu wil ik graag 30 bestellingen uit de database halen. Een limit van 30 achter de query plakken gaat natuurlijk niet werken aangezien er dan 30 bestelregels uit de database worden gehaald.
Ik heb de query uitgebreid:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| SELECT `bestellingen`.`naam`, `artikelen`.`titel`, `bestelregels`.`aantal`, `artikelen`.`prijs` FROM `bestellingen` Inner Join `bestelregels` ON `bestelregels`.`bestelID` = `bestellingen`.`ID` Inner Join `artikelen` ON `bestelregels`.`artikelID` = `artikelen`.`ID` WHERE `bestellingen`.`ID` <= (SELECT MAX(`bestellingen`.`ID`) FROM `bestellingen` LIMIT 30) |
Dit is niet heel betrouwbaar en het probleem is: ik wil graag kunnen sorteren op bijvoorbeeld de naam van mensen die een bestelling hebben geplaatst en op andere kolommen. Hoe kan ik dit nu aanpakken? Ik ben in de veronderstelling dat eigenlijk alles wel door middel van 1 query uit een database is te halen. Is dit hier mogelijk of moet ik van elke bestelling de bestelregels met een extra query uit de database halen?