( gsimon | 2006. 05. 09., k – 14:40 )

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.