★ Aan de slag 24

Open de SQL-tool. We maken voor deze opdracht gebruik van de database 'transacties'. Schrijf een query waarmee je kunt controleren of alle rekeninghouders een telefoonnummer hebben opgegeven.

Transacties

De ING wil een overzicht van alle transacties van het type GM (geldautomaat) of OV (overschrijving) vanaf 1 maart 2016. Daarvoor is de onderstaande query bedacht:

SELECT transactie_id, type, rekening_bij, rekening_af, datum
FROM transactie
WHERE datum >= '2016-03-01'
AND type ='GM' OR type = 'OV';


Het resultaat van deze query is een lijst van alle transacties van het type GM vanaf 1 maart 2016 en alle transacties die van het type OV zijn. Dat was niet de bedoeling.

Je kunt deze query vergelijken met de volgende som: 3 + 2 x 5. De uitkomst van deze som is 13. Je vermenigvuldigt immers eerst 2 met 5 en daarna tel je er 3 bij op. Kortom: vermenigvuldigen gaat vóór optellen. Als het de bedoeling is om eerst op te tellen en dan pas te vermenigvuldigen, dan moet je haakjes gebruiken: (3 + 2) x 5.

Hetzelfde is het geval wanneer je in een voorwaarde AND en OR gebruikt: AND gaat voor OR.

In het voorbeeld wordt dus eerst gezocht naar de rijen waarvoor geldt dat het transacties zijn vanaf 1 maart 2016 en waarvan het type = 'GM'. Daarna wordt er gezocht naar alle transacties met type = 'OV'. Om het gewenste resultaat te krijgen, moeten er haakjes gebruikt worden in de query:

SELECT transactie_id, type, rekening_bij, rekening_af, datum
FROM transactie
WHERE datum >= '2016-03-01'
AND (type ='GM' OR type = 'OV');

Met als resultaat alle transacties met type = 'GM' of type = 'OV' vanaf 1 maart 2016.