Der jeg gerne vil have fat i vinderene af de forskellig races. Kravet til at være en vinder er en driver har max laps samtidig med race_time er så lille som mulig.
Det her skulle virke hvis jeg har forstået dit problem rigtig.
Select * From Race inner join (Select raceid, min(race_time) as mintime From Race inner join Grandprix on (Race.grandprixid = Grandprix.grandprixid and Race.laps = Grandprix.laps) group by raceid) as besttimes on besttimes.raceid = Race.raceid where race_time = mintime
Det interesandte sker her:
Select raceid, min(race_time) as mintime From Race inner join Grandprix on (Race.grandprixid = Grandprix.grandprixid and Race.laps = Grandprix.laps) group by raceid
Hvor vi finder min. tiden for de biler der har kørt det rigtig antal omgange i hvert race.
Det giver mig desværre ikke helt det jeg gerne vil have.
Det store problem er at vindertiden ikke nødvendigvis er den mindste tid. Og dette er fordi at kører kan være udgået. Dvs vinderen er den køre med med den mindste tid blandt de kører som har kørt max omgange. Og dette skal så grupperes efter grandprixid. Grandprixid hvilke rækker der høre til det enkelte grandprix.
A. Der er mangle rows i race som er knyttet til et grandprix. Hver enkelt af disse rows indeholde data om hvordan en kører klarede sig i det grandprix. Grandprix indeholde data om tid og sted for afholdes af grandprixet. Race indeholde data om hvordan hverenkelt kører klarede sig i det grandprix. Det kan sammenligenes med en CD som indeholder flere numre. CD=grandprix, nummer=race.
B. Grandprix.laps fortæller hvor mange omgange et grandprix er berammet til. Race.laps fortæller hvor mange omgange en kører har kørt i det grandprix. Det skal sige at vinderen af et grandprix ikke nødvendigvis har kørt den antal omgange grandprixet er berammet til. Dette kan skyldes flere ting. F.eks. at grandprixet bliver standset havlvejs pga. et meget stort masse uheld.
C. Vinderen af et grandprix er også vinderen af løbet.
D. Jeg har mærkeret vinderene med en * Race tabellen er sorteret på følgende måde: order by gpid, laps desc, r_time asc.
rid=174 har vundet grandprix 17 forbi. Han har i gpid=17 har kørt flerst omgange = 62. Det er han ikke ene om, der er 7, men her den af de 7 som har den laveste tid.
Dette samme gælder for rid=209. rid=209 har vundet grandprix 18 forbi. Han har i gpid=18 har kørt flerst omgange = 65. Det er han ikke ene om, der er 4, men her den af de 4 som har den laveste tid.
E.
Grandprix gpid | date | trackid | note | gp | laps ------+------------+---------+------+--------------------------+------ 17 | 2003-04-20 | 38 | | grand prix of san marino | 62 18 | 2003-05-04 | 72 | | grand prix of spain | 65
Ikke alting kan laves i en query. Dette problem skal løses via flere sql querys og noget programmeringskode.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.