FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Klarade millennium-buggen
|
Jag har en tabell innehållandes lopp som går runtom i Sverige (västsverige mestadels, faktiskt) och en tabell innehållandes mina resultat.
Jag har försökt att filtrera ut så att jag bara får ut de tiderna jag haft bäst (minst tid) på 10KM och gruppera på år för att få ut årsbästa. Så här skrev jag: Kod:
SELECT MIN(`r`.`time`), `e`.`name`, `e`.`length`, `e`.`date` `myDate`, YEAR(`e`.`date`) `myYear` FROM `results` `r` INNER JOIN `events` `e` ON `e`.`ID`= `r`.`eventID` WHERE `r`.`userID`=1 AND `e`.`length`=10 GROUP BY YEAR(`e`.`date`) ORDER BY `myYear` ASC, `r`.`time` ASC Kod:
MIN(`r`.`time`) name length myDate myYear 00:41:45 Sylvesterloppet 10.0 2004-12-31 2004 00:42:58 Göteborg Cross Country 10.0 2005-04-09 2005 00:40:54 Göteborgs Cross Country 10.0 2006-04-29 2006 00:42:00 Blodomloppet Göteborg 10.0 2007-05-30 2007 00:40:48 Lerumsloppet 10.0 2008-04-26 2008 Så här skall resultatet bli (jag har själv tagit ut dessa rader manuellt) Kod:
time name length myDate myYear 00:41:45 Sylvesterloppet 10.0 2004-12-31 2004 00:42:58 Lerumsloppet 10.0 2005-04-23 2005 00:40:54 Blodomloppet Göteborg 10.0 2006-05-31 2006 00:42:00 Sylvesterloppet 10.0 2007-12-31 2007 00:40:48 Blodomloppet Göteborg 10.0 2008-05-28 2008 Någon som har en idé vad det kan vara som är galet? Det är MySQL5 som körs. |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Klarade millennium-buggen
|
Min() plockar bara ut minvärdet och inte en specifik rad där minvärdet återfinns. Därför kan du inte använde det för en koppling.
När du gör en group by så plockar mysql ut rader efter hur de råkar ligga i tabellen och inte efter nån slags ordning som man kan ange. Ett sätt att komma runt detta är att använda en subquery som tar fram den ordning som du vill ha, eller endast den rad som du vill ha med. |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Klarade millennium-buggen
|
Så först göra en loop där jag får ut de år jag har resultat på 10Km och sedan ta ut den bästa (lägsta) tiden det året, borde fungera. Dock hade det varit optimalt att bara ha en query.
|
||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Mycket flitig postare
|
Citat:
Med typ SELECT MIN(tid) AS topptid, evenemang, år GROUP BY år,evenemang eventuellt med någon HAVING borde du väl kunna få fram vad du letar efter (har inte riktigt förstått vad du vill få ut). Det är lite jobbigt att läsa querien med alla "flärpar" - finns det någon speciell anledning till att ha det så (förutom att du använder funktionsnamn som fältnamn)? |
|||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Klarade millennium-buggen
|
Finns ett exempel i manualen:
http://dev.mysql.com/doc/refman/5.0/en/exa...-group-row.html |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Klarade millennium-buggen
|
spännande... Tack!
|
||
![]() |
![]() |
Svara |
|
|