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 opgesteld:
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 (en dus ook die van voor 1 maart 2016). 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 namelijk eerst 2 met 5 en daarna tel je er pas 3 bij op. Kortom: vermenigvuldigen gaat vóór optellen. Als het de bedoeling is om eerst 3 en 2 op te tellen en daarna 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: eerst wordt AND uitgevoerd en daarna pas OR.
In het bovenstaande voorbeeld wordt dus eerst gezocht naar de rijen waarvoor geldt dat het transacties zijn vanaf 1 maart 2016 en van 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')
Het resultaat zijn alle transacties van het type = 'GM' of het type = 'OV' na 1 maart 2016.