Uitleg
Stel dat je de naam van het oudste medewerker wilt laten afdrukken, dan kan dat met een subquery.
Die gaat als volgt:
select Firstname, Lastname
from Employee
where BirthDate = (
select min(BirthDate)
from Employee);
Als deze query wordt uitgevoerd dan wordt eerst de subquery uitgevoer (de query tussen haakjes), dus:
select min(BirthDate)
from Employee;
Als je die uitvoert verschijnt er: 1947-09-19 00:00:00
Daarna wordt de hoofdquery uitgevoerd, en in plaats van de subquery wordt 1947-09-19 00:00:00
ingevuld.
Er staat dan dus eigenlijk:
select Firstname, Lastname
from Employee
where BirthDate = "1947-09-19 00:00:00";
Subquery met IN
Stel dat je al de tracknamen wilt die verkocht zijn.
Dan kan dat door een join te gebruiken:
select *
from InvoiceLine as I, Track as T
where I.TrackID = T.TrackID;
Let op dat hier met
AS
een afkorting maken voor de join!
Maar dit kan dus ook met een subquery:
Select *
from InvoiceLine
Where TrackID IN (
select TrackID
from Track);
Omdat er nu uit een lijstje gekozen worden moet je IN gebruiken, en geen =
Je mag alleen = gebruiken als je er zeker van bent dat het resultaat van de subquery maar één exemplaar oplevert!
Last updated
Was this helpful?