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