SQL lekérdezés ogyan Accesben!

Sziasztok egy olyan problémám van,hogy adott egy excel tábla regeteg rekorddal ami folyamatosan bővül ezt a táblát beimportálom accesbe amiből a következő mezőket használom:
-helyezés,
-név,
-szül idő,
-klub,
-elért időeredmény,
-hely,
-dátum,
-korcsoport,
-versenyszám

Egy olyan lekérdezést kellene csinálnom,hogy korcsoportonként (ezt én adom meg lásd having) és versenyszámonként ,az elért időeredmények alpján nővekvő sorrendben a tíz versenyző("legjobb") csak a legjobb eredményével szerepeljen a listán!Illetve a másik lekerdezés az egész évben elért legjobb 20 eredmény legyen rajta korcsoportonként.

Az elsőre csináltam egy lekérdezést (lásd alábbiakban),de ez csak korcsoportonként és verseny számonként irja ki mindekinek az eredményét növekvő sorrendben!Igy előfordul,hogy u.az a versenyző 10 legjobb eredménye kerül csak fel a tízes listára.

SELECT [Tábla].[Név], [Tábla].[Szül-idő], [Tábla].[Klub], [Tábla].[Elért Idő], [Tábla].[Hely], [Tábla].[Dátum], [Tábla].[Csúcs], [Tábla].[Szám]
FROM Tábla

GROUP BY [Tábla].[Név], [Tábla].[Szül-idő], [Tábla].[Klub], [Tábla].[Idő], [Tábla].[Hely], [Tábla].[Dátum], [Tábla].[Csúcs], [Tábla].[Szám]
HAVING (((Tábla.[Szül-idő]) Between 1977 And 1981))
ORDER BY [Tábla].[Szám], [Tábla].[Idő];

Tudnátok erre egy jó megoldást vagy ötletet adni???
Minden megoldás érdekel!

Előre is köszi.

Hozzászólások

Talán nem ártana a normálformákat betartani, azaz pl.: ismétlődő adatot nem tárolunk, csak hivatkozást rá (1NF), ill. redundáns adatot sem (3NF, jelen helyzetben ui. az időeredményből a helyezés következik)

Ezek szerint legyen inkább:
- egy VERSENYZO táblád, amiben a név és a szül. idő van (+ id mint elsődleges kulcs)
- egy VERSENY táblád, amiben a helyszín és a dátum van (+ id mint elsődleges kulcs)
- egy EREDMENY táblád, amiben a versenyzo_id, a korcsoport, a versenyszám, a verseny_id és az idoeredmeny van

Aztán ebből az egyes versenyzők legjobb eredményei pl.:
select versenyzo_id, korcsoport, versenyszam, min(idoeredmeny) as min_ido
from EREDMENY group by (versenyzo_id, korcsoport, versenyszam)
order by min_ido;

Törpöltem. Ocsmány, de jobb nem jutott eszembe:
select korcsoport, versenyszam, idoeredmeny
from EREDMENY q
where idoeredmeny in (select idoeredmeny from EREDMENY where korcsoport=q.korcsoport and versenyszam=q.versenyszam order by idoeredmeny limit 20);

Ha nincs mindhárom említett mező szerint indexelve a tábla, akkor ez N^2 lépésidejű lesz, ergo keresztre/félholdra/dávidcsillagra feszítés jár érte alsó hangon, de egyelőre nem tudok jobbat.