laatste datum weegeven

Status
Niet open voor verdere reacties.

shidan

Gebruiker
Lid geworden
8 jan 2007
Berichten
354
beste,

ik ben een db aan het maken voor een duikclub.
op bepaalde momenten hebben zijn examens.
nu wil ik weten wat de laatste examendatum van de leden is
(maw. welk niveau zijn hebben behaald)
selecteren probeer ik met deze query:

Code:
In (SELECT TOP 1 persoon_id  FROM tbl_examens AS Dupe 
WHERE Dupe.examen_id = tbl_examens.examen_id ORDER BY Dupe.examendatum DESC, Dupe.examen_id ASC)

de opbouw van de db is de volgende:

examens_id autonummering
persoon_id lange integer
examendatum date
graad_id lang integer
geslaagd boolean


tot op heden krijg is meerdere examendatums van personen door.
kan iemand mij helpen aub?
 
Als die meerdere examendata van die leden al netjes zijn gesorteerd (laatste examendatum eerste getoond) dan zou je Distinct kunnen gebruiken.

Probeer dus:
SELECT DISTINCT persoon_id FROM tbl_examens AS Dupe
WHERE Dupe.examen_id = tbl_examens.examen_id ORDER BY Dupe.examendatum DESC, Dupe.examen_id ASC

[Of je WHERE clause correct is kan ik (met mijn kennis van SQL) niet beoordelen, dus mocht daar wat fout zijn dan hoor je het wel van andere helpers.]

Tijs.
 
Laatst bewerkt:
hallo,

het lukt deels.
nu krijg ik één persoon met zijn laatste datum
(afhankelijk van zijn id)

ik wens een lijst van alle personen met hun laatste datum.

kan dat ook?
 
Andere aanpak handiger ?

Goedenavond,

Wellicht is het handiger om een lus-constructie te maken met gebruikmaking van record sets ?

Ik zou 't volgende kiezen :

Maak een recordset van alle records uit de tabel van leden.
Doorloop ze één voor één.

Binnen die lus zou je dan - per duiker - kunnen zoeken naar het laatste duikexamen en dat kunnen opnemen in bijvoorbeeld een tussentabel. Deze tussentabel zou de velden krijgen :
- IDDuiker ;
- laatste examendatum.

Uiteindelijk heb je dan in de tussentabel hetgeen je eigenlijk zoekt ?

Enfin, just a thought !

Mvg,

HH
 
Kleine aanvulling nog ...

... die door mij voorgestelde tussentabel ( noem 'm evt. bijvoorbeeld tblTijdelijkLaatsteExamendataDuikers ), zou je steeds bij het opstarten van de ( nieuw te maken ) code éérst ( opnieuw ) leegmaken.

Anders hoopt e.e.a. zich natuurlijk op.


Mvg,

Hans
 
Volgens mij moet het prima lukken met je filter, al vind ik 'm op het verkeerde veld staan:

Code:
In (SELECT TOP 1 examen_id FROM tbl_examens AS Dupe 
WHERE Dupe.persoon_id = tbl_examens.persoon_id ORDER BY Dupe.examendatum DESC)
Je wilt het laatste examen weten, niet de laatste persoon.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan