De ING wil graag weten van welke type de oudste transactiedatum is. Deze vraag is niet zo makkelijk. Dit komt omdat je eigenlijk twee opdrachten moet uitvoeren om deze vraag te beantwoorden: Zoek de oudste transactiedatum en zoek uit wat voor type bij deze transactie hoort.
Het antwoord op het eerste deel van de vraag kun je vinden met de query:
SELECT MIN(datum)
FROM transactie;
Het resultaat van deze query is 2015-12-19.
Wanneer je dit antwoord hebt, is het tweede deel van de vraag niet zo moeilijk meer te beantwoorden:
SELECT type
FROM transactie
WHERE datum = '2015-12-19';
Deze twee queries kun je combineren tot een enkele query:
SELECT type
FROM transactie
WHERE datum = (SELECT MIN(datum)
FROM transactie);
In plaats van het resultaat van de eerste SELECT, 2015-12-19, is de hele SELECT-opdracht ingevuld, die dat resultaat oplevert. Dit wordt een subquery of subselect genoemd.
Er is een belangrijk verschil tussen de definitie van een subquery en een query: De SELECT-component van een subquery mag maar één expressie bevatten, omdat anders de subquery een tabel oplevert bestaande uit een aantal kolommen. Elke rij bevat dan meerdere waarden. Bij voorwaarden met een subquery wordt het resultaat vergeleken met een waarde uit één enkele kolom, bijvoorbeeld datum =
'2015-12-19'.