Top 10 voor unieke records

Status
Niet open voor verdere reacties.

Haaren101

Terugkerende gebruiker
Lid geworden
4 apr 2007
Berichten
3.195
Ik heb een database met 2600 gezwommen tijden op bijvoorbeeld de 50 meter vrije slag. Ik wil van deze 2600 tijden de 10 snelste tijden hebben. Dat lukt me met de onderstaande query op 2 tabellen die gekoppeld zijn met het startnummer.

Echter, de top 10 tijden zijn door 3 zwemmers gezwommen. Wat ik zoek is een lijstje van 10 zwemmers met hun snelste tijd. Dus iedere zwemmer kan slechts 1 keer in de top 10 staan (en dan met zijn snelste tijd natuurlijk). (Iedere zwemmer heeft een uniek startnummer). Wie heeft de gouden tip?!?

Code:
SELECT TOP 10 dtLeden.Startnummer, dtTijden.Afstand, dtTijden.Slag, dtTijden.Tijd
FROM dtLeden INNER JOIN dtTijden ON dtLeden.Startnummer = dtTijden.[Start nr]
GROUP BY dtLeden.Startnummer, dtTijden.Afstand, dtTijden.Slag, dtTijden.Tijd
HAVING (((dtTijden.Afstand)="50") AND ((dtTijden.Slag)="VRIJ"))
ORDER BY dtTijden.Tijd;

Ron
 
Eerst een query maken van de snelste tijd van alle zwemmers, en daar de snelste 10 van nemen.
 
Oeps, dat is wel erg voor de hand liggend. En die query had ik al klaar staan. :o

Maar ik loop nu tegen het volgende aan. Ik heb een lijst van zo'n 630 records met slagen en afstanden en tijden. Dus zo ongeveer 50 tijden voor de 100 meter Rugslag, 50 tijden voor de 200 vlinder etc. Het lukt mij niet om de top 10 voor iedere combinatie slag/afstand te generen uit die tabel.

Iemand een tip?

Ron
 
Je wilt de top 10 voor elke slag? Je kunt dat nog wel in één query onderbrengen, maar die wordt dan niet erg snel. Ik zou dan ook (ook voor het gemak) van elke slag/afstand een eigen query maken, en die naderhand met een Union query aan elkaar knopen. Uiteindelijk heb je dan voor elke slag/afstand combinatie je top 10 records bij elkaar.
 
Bekijk bijlage Top10db.zip

Ik snap wat je bedoelt!

- snelheid lijkt me geen punt. We praten over een database van 650 records die wel iets zal groeien maar meer dan 1500 zullen het er nooit worden.
- Aparte queries is (eenmalig) wat werk en goed te doen. Is ook veel beter onderhoudbaar
- Maar ik hoor nu voor het eerst over een Union query (doe ook niet zo veel met access). Heb je een hint of een voorbeeldje?

Ik heb een deel van de database waar het om gaat toegevoegd. Hierin zitten al 2 queries. Hoe combineer ik die?

Bedankt vast
Ron
 
Laatst bewerkt:
Als je een nieuwe query maakt met onderstaande code, dan heb je er een :)

Code:
SELECT Startnummer, Afstand, Slag, MinOfTijd
FROM 50Vlinder 
UNION SELECT Startnummer, Afstand, Slag, MinOfTijd
From 50Vrij
UNION
SELECT Startnummer, Afstand, Slag, MinOfTijd
FROM 100Vlinder 
UNION SELECT Startnummer, Afstand, Slag, MinOfTijd
From 100Vrij
ORDER BY Afstand, Slag, MinOfTijd;

Overigens zou ik van het veld Afstand geen tekstveld hebben gemaakt.... Bij ons zijn de zwembaden altijd in meters, oftewel: getallen ;)
 
Laatst bewerkt:
Michel,

bedankt! Ga er vandaag mee aan de gang. Ik heb de database niet zelf gemaakt en ja, ik zou zelf ook integers gebruikt hebben. Sorteert ook beter, maar ik moet het hiermee doen.

Nogmaals, bedankt
Ron
 
Als je wilt sorteren in de query, kun je met cInt([Afstand]) de afstand altijd nog omzetten naar een getal.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan