Avatar billede jacobs12 Nybegynder
19. februar 2016 - 10:56 Der er 5 kommentarer

MySQL group by datetime (Svær)

Hej, håber der er nogle MySQL eksperter derude, Der kan hjælpe mig.
Nu har jeg kæmpet med dette de sidste par dage..

Jeg har en database med en masse racetider.
I tabellen er der følgende felter starttid(2016-02-18 21:31:30), sluttid(2016-02-18 21:31:53) og en rank (1.02) på hver deltager i løbene.

Min tabel ser sådan her ud:

id | userid | starttid            | sluttid            | rank
---------------------------------------------------------------
1  | 32    | 2016-02-18 21:31:30 | 2016-02-18 21:31:53 |  1.01
2  | 31    | 2016-02-18 21:31:30 | 2016-02-18 21:31:52 |  2.51
3  | 33    | 2016-02-18 21:31:29 | 2016-02-18 21:31:53 |  0.18

4  | 32    | 2016-02-18 21:32:18 | 2016-02-18 21:33:23 |  4.01
5  | 34    | 2016-02-18 21:32:18 | 2016-02-18 21:33:23 |  2.21

6  | 33    | 2016-02-18 21:33:01 | 2016-02-18 21:33:11 |  0.96

Spørgsmål 1. Er det i det hele taget muligt at gruppere og finde de forskellige løb ud fra start- og sluttiderne?
Altså at id 1,2,3 er et løb eftersom alle tiderne start og slutter indenfor +- en tidsperiode på 2 sek.
og at id 4,5 er et andet løb og 6 et tredje løb.

Spørgsmål 2. Er det muligt at efter man har fundet de forskellige løb, kun at vise den deltager med den mindste rank.
Så i "løb/gruppen" som består af id 1,2,3 er det kun id 3 der bliver selected?

Min mysql sætningen skulle  gerne returnere id = 3,5,6 fra tabellen på siden.

På forhånd tak :)
Avatar billede moddi100 Seniormester
19. februar 2016 - 11:22 #1
Du kan sådan set godt lave det som du ønsker det, men det ville være langt mere hensigtsmæssigt at du oprettede en ny tabel til bare løbene. På den måde bliver dine forespørgsler simple og du kan selv relativt nemt udvikle dit system.
Avatar billede Rune1983 Ekspert
19. februar 2016 - 11:39 #2
Mangler du ikke bare en kolonne med Løb nr.

id | userid | starttid            | sluttid            | rank    | loebnr
---------------------------------------------------------------
1  | 32    | 2016-02-18 21:31:30 | 2016-02-18 21:31:53 |  1.01  | 1
2  | 31    | 2016-02-18 21:31:30 | 2016-02-18 21:31:52 |  2.51  | 1
3  | 33    | 2016-02-18 21:31:29 | 2016-02-18 21:31:53 |  0.18  | 1

4  | 32    | 2016-02-18 21:32:18 | 2016-02-18 21:33:23 |  4.01  | 2
5  | 34    | 2016-02-18 21:32:18 | 2016-02-18 21:33:23 |  2.21  | 2

6  | 33    | 2016-02-18 21:33:01 | 2016-02-18 21:33:11 |  0.96  | 3

Så har du fuld kontrol med løbne samt udtræk vil være noget nemmere.
Avatar billede jacobs12 Nybegynder
19. februar 2016 - 12:16 #3
Mange tak for jeres svar.
Jeg bruger userid som nøglen til mine løbere. Så loebnr er userid;

Så tabellen skal forstås sådan at i løb nr.1 deltager løber 32,31,33 (userid)

Håber det giver mening :)
Avatar billede jacobs12 Nybegynder
19. februar 2016 - 12:19 #4
"Rank" kolonnen er ikke hans placering i tidligere løb. Men er hans afstand i meter fra målstregen når tiden starter. :)
Avatar billede Rune1983 Ekspert
19. februar 2016 - 12:43 #5
I min verden er du da nødt til at have noget som holder styr på hvilke userid der er i hvert løb? For som jeg ser det kan et userid deltage i flere løb.
Men det kan godt være jeg er galt på den. Men det sådan jeg læser det. :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester