![]() |
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` Kod:
MIN(`r`.`time`) name length myDate myYear Så här skall resultatet bli (jag har själv tagit ut dessa rader manuellt) Kod:
time name length myDate myYear Någon som har en idé vad det kan vara som är galet? Det är MySQL5 som körs. |
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. |
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.
|
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)? |
Finns ett exempel i manualen:
http://dev.mysql.com/doc/refman/5.0/en/exa...-group-row.html |
spännande... Tack!
|
Alla tider är GMT +2. Klockan är nu 21:27. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson