Een subquery in MariaDB is een innerlijke query die u in staat stelt een query uit te voeren binnen een andere query. Subquery’s kunnen worden gebruikt in SELECT-, INSERT-, UPDATE- en DELETE-statements. Hier zijn enkele voorbeelden van hoe u subquery’s in MariaDB zou kunnen gebruiken:
1. Subquery in een SELECT instructie:
Voorbeeld:
```
SELECT klantnaam
FROM klanten
WHERE ‘klantID’ IN (SELECT klantID
FROM bestellingen
WHERE totaalkosten > 100);
```
In bovenstaand voorbeeld wordt eerst de subquery uitgevoerd. Deze retourneert alle klantID’s waar de totale kosten groter zijn dan 100. Vervolgens wordt de hoofdquery uitgevoerd om alle klantnamen te krijgen waarvan de klantID’s overeenkomen met de ID’s die door de subquery worden geretourneerd.
1. Subquery in een INSERT instructie:
Voorbeeld:
```
INSERT INTO besteld_producten(klantID, productNaam, besteldDatum)
SELECT klantID, productNaam, NOW
FROM klanten
WHERE klantID NOT IN (SELECT klantID
FROM besteld_producten
WHERE besteldDatum = CURDATE);
```
In het bovenstaande voorbeeld wordt eerst de subquery uitgevoerd die de klantID’s retourneert die al bestellingen hebben gedaan op de huidige datum. Vervolgens wordt de hoofdquery uitgevoerd om nieuwe bestelde artikelen in te voegen voor klanten die nog geen bestellingen hebben geplaatst op de huidige datum.
1. Subquery in een UPDATE instructie:
Voorbeeld:
```
UPDATE producten
SET prijs = (SELECT prijs
FROM leverancierprijzen
WHERE leverancierprijzen.productID = producten.productID)
WHERE EXISTS (SELECT 1
FROM leverancierprijzen
WHERE leverancierprijzen.productID = producten.productID);
```
In het bovenstaande voorbeeld wordt de subquery eerst uitgevoerd om de prijs van het product van de leveranciersprijs te halen. De hoofdquery wordt vervolgens uitgevoerd om de productprijs bij te werken als er een overeenkomende productID tussen de producten en de leveranciersprijs is.
1. Subquery in een DELETE instructie:
Voorbeeld:
```
DELETE FROM klanten
WHERE klantID NOT IN (SELECT klantID
FROM bestellingen);
```
In het bovenstaande voorbeeld wordt de subquery eerst uitgevoerd die de klantID’s retourneert die bestellingen hebben geplaatst. De hoofdquery wordt vervolgens uitgevoerd om klantrecords te verwijderen die geen overeenkomende klantID’s in de bestellingen hebben.