recentste datums selecteren

Status
Niet open voor verdere reacties.

shidan

Gebruiker
Lid geworden
8 jan 2007
Berichten
354
goedenavond,

ik heb een databank waarin onder ander examens zitten.
elk examen heeft een datum.
diverse personen kunnen deelnemen aan een examen.

eens geslaagd voor een examen kunnen ze een volgende examen meedoen.

nu wens ik een overzicht met de personen en hun hoogste kwalificatie.
dus een lijstje met de personen en hun laatste examen.

hoe kan ik dat doen aub?
 
Je zult de datums (Eigenlijk de ExamenID's) moeten filteren op de laatste datum voor elke persoon. Omdat we geen database hebben, een voorbeeldje op basis van Noordenwind:
Code:
SELECT CustomerID, OrderDate, Freight, OrderID
FROM Orders
WHERE (OrderID In (SELECT TOP 1 OrderID FROM Orders AS Dupe 
     WHERE Dupe.CustomerID = Orders.CustomerID ORDER BY Dupe.OrderDate DESC, Dupe.OrderID DESC))
ORDER BY CustomerID;
 
Laatst bewerkt:
hallo,

schijnbaar is er toch nog een probleem.
bijgevoegd een kleine voorbeelddatabase.
de query zou enkel de hoogste niveau's moeten geven
(dus elke persoon mag éénmaal voorkomen)

Bekijk bijlage examens.zip
 
Met een extra query lukt het wel.
Query qLaatsteDatum:
Code:
SELECT persoon_id, Last(examendatum) AS LaatsteDatum FROM tbl_examens GROUP BY persoon_id;
En dan:
Code:
SELECT tbl_examens.graad_id, tbl_graden.naam AS Graad, tbl_personen.naam AS Deelnemer, tbl_examens.persoon_id, tbl_examens.examendatum
FROM tbl_personen INNER JOIN (tbl_graden INNER JOIN (qLaatsteDatum INNER JOIN tbl_examens ON (qLaatsteDatum.persoon_id = tbl_examens.persoon_id) AND (qLaatsteDatum.LaatsteVanexamendatum = tbl_examens.examendatum)) ON tbl_graden.graad_id = tbl_examens.graad_id) ON tbl_personen.persoon_id = tbl_examens.persoon_id
WHERE (((tbl_examens.geslaagd)=True))
ORDER BY tbl_examens.graad_id, tbl_personen.naam, tbl_examens.examen_id;
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan