Avatar billede angelenglen Nybegynder
09. december 2011 - 12:09 Der er 6 kommentarer og
1 løsning

Sorter datasæt efter både dato og id, for hver dag

Jeg har en del rækker data, som jeg prøver at trække ud pænt sorteret.

De to hoved-data jeg sorterer på er henholdsvis data og rute.

Her er et eksempel på de rå data i databasen:

id          rating rute  dato     
----------- ------ ------ -----------
1          3      1      1321226891
2          4      1      1321226932
3          3      1      1321227614
4          4      1      1321227830
5          4      1      1321257527
6          3      2      1321262525
7          4      1      1321280124
8          3      1      1321283190
9          5      3      1321377143
10          4      2      1321391290
11          5      1      1321456503
12          4      1      1321482384
13          5      1      1321529010
14          3      1      1321530464
15          3      1      1321535650
16          3      1      1321540463
17          3      1      1322577354
18          4      1      1323350506
19          3      2      1323350551

(Dato er unix timestamp)

Mit mål er at få data ud sorteret på denne måde:
(har oversat timestamps til læsbare datoer i dette eksempel)

Dato: 13-11-2011
dato;rating;rute id;rute navn;
13-11-2011 23:28:11;3;1;151-152: By1 - By2;
13-11-2011 23:28:52;4;1;151-152: By1 - By2;
13-11-2011 23:40:14;3;1;151-152: By1 - By2;
13-11-2011 23:43:50;4;1;151-152: By1 - By2;
Antal ratings: 4, Gennemsnit: 0,29

Dato: 14-11-2011
dato;rating;rute id;rute navn;
14-11-2011 07:58:47;4;1;151-152: By1 - By2;
14-11-2011 14:15:24;4;1;151-152: By1 - By2;
14-11-2011 15:06:30;3;1;151-152: By1 - By2;
14-11-2011 09:22:05;3;2;151-152: By2 - By1;
Antal ratings: 4, Gennemsnit: 0,29

Dato: 15-11-2011
dato;rating;rute id;rute navn;
15-11-2011 21:08:10;4;2;151-152: By2 - By1;
15-11-2011 17:12:23;5;3;190-191: By3 - By4;
Antal ratings: 2, Gennemsnit: 0,22

Dato: 16-11-2011
dato;rating;rute id;rute navn;
16-11-2011 15:15:03;5;1;151-152: By1 - By2;
16-11-2011 22:26:24;4;1;151-152: By1 - By2;
Antal ratings: 2, Gennemsnit: 0,22

Dato: 17-11-2011
dato;rating;rute id;rute navn;
17-11-2011 11:23:30;5;1;151-152: By1 - By2;
17-11-2011 11:47:44;3;1;151-152: By1 - By2;
17-11-2011 13:14:10;3;1;151-152: By1 - By2;
17-11-2011 14:34:23;3;1;151-152: By1 - By2;
Antal ratings: 4, Gennemsnit: 0,29

Dato: 29-11-2011
dato;rating;rute id;rute navn;
29-11-2011 14:35:54;3;1;151-152: By1 - By2;
Antal ratings: 1, Gennemsnit: 0,33

Dato: 08-12-2011
dato;rating;rute id;rute navn;
08-12-2011 13:21:46;4;1;151-152: By1 - By2;
08-12-2011 13:22:31;3;2;151-152: By2 - By1;
Antal ratings: 2, Gennemsnit: 0,29


Ved hjælp af følgende SQL sætning, er jeg foreløbig kommet frem til følgende output, men rute-id'erne er ikke sorteret korrekt for hver dag.
(se 14/11 og 15/11, der kan det ses at ruterne ikke er sorteret.)

SELECT r.id, r.rating, r.dato, r.rute as rute_id, rute.navn as rute_navn FROM ratings r, ruter rute WHERE r.rute = rute.id ORDER BY r.dato ASC, r.rute ASC


Dato: 13-11-2011
dato;rating;rute id;rute navn;
13-11-2011 23:28:11;3;1;151-152: By1 - By2;
13-11-2011 23:28:52;4;1;151-152: By1 - By2;
13-11-2011 23:40:14;3;1;151-152: By1 - By2;
13-11-2011 23:43:50;4;1;151-152: By1 - By2;
Antal ratings: 4, Gennemsnit: 0,29

Dato: 14-11-2011
dato;rating;rute id;rute navn;
14-11-2011 07:58:47;4;1;151-152: By1 - By2;
14-11-2011 09:22:05;3;2;151-152: By2 - By1;
14-11-2011 14:15:24;4;1;151-152: By1 - By2;
14-11-2011 15:06:30;3;1;151-152: By1 - By2;
Antal ratings: 4, Gennemsnit: 0,29

Dato: 15-11-2011
dato;rating;rute id;rute navn;
15-11-2011 17:12:23;5;3;190-191: By3 - By4;
15-11-2011 21:08:10;4;2;151-152: By2 - By1;
Antal ratings: 2, Gennemsnit: 0,22

Dato: 16-11-2011
dato;rating;rute id;rute navn;
16-11-2011 15:15:03;5;1;151-152: By1 - By2;
16-11-2011 22:26:24;4;1;151-152: By1 - By2;
Antal ratings: 2, Gennemsnit: 0,22

Dato: 17-11-2011
dato;rating;rute id;rute navn;
17-11-2011 11:23:30;5;1;151-152: By1 - By2;
17-11-2011 11:47:44;3;1;151-152: By1 - By2;
17-11-2011 13:14:10;3;1;151-152: By1 - By2;
17-11-2011 14:34:23;3;1;151-152: By1 - By2;
Antal ratings: 4, Gennemsnit: 0,29

Dato: 29-11-2011
dato;rating;rute id;rute navn;
29-11-2011 14:35:54;3;1;151-152: By1 - By2;
Antal ratings: 1, Gennemsnit: 0,33

Dato: 08-12-2011
dato;rating;rute id;rute navn;
08-12-2011 13:21:46;4;1;151-152: By1 - By2;
08-12-2011 13:22:31;3;2;151-152: By2 - By1;
Antal ratings: 2, Gennemsnit: 0,29
Avatar billede angelenglen Nybegynder
09. december 2011 - 12:37 #1
Ps. er godt klar over at det tal jeg skriver ud for Gennemsnit er forkert, det har jeg siden rettet ;-)
Avatar billede angelenglen Nybegynder
09. december 2011 - 14:23 #2
Endte med at løse det ved at loope igennem mit recordset flere gange, og på den måde få det sorteret som jeg ønsker.
Avatar billede teepee Nybegynder
14. december 2011 - 09:52 #3
Du kunne ellers bare konkatenere datotid og rutenavne sammen til én streng, ligesom du har gjort i selve udskriften, hvis du sorterede efter denne streng ville datoer/ruter stå rigtigt, vel at mærke hvis du i datoformatet benytter YYYYMMDD....
Avatar billede angelenglen Nybegynder
14. december 2011 - 10:15 #4
Jeg kan ikke se hvordan det ville få
2011-11-20 10:20 3
2011-11-20 11:20 2
2011-11-20 12:20 1
2011-11-20 13:20 1
2011-11-20 14:20 2
2011-11-20 15:20 3
2011-11-21 10:20 3
2011-11-21 11:20 2
2011-11-21 12:20 1
2011-11-21 13:20 1
2011-11-21 14:20 2
2011-11-21 15:20 3

til at blive sorteret som:

2011-11-20 12:20 1
2011-11-20 13:20 1
2011-11-20 11:20 2
2011-11-20 14:20 2
2011-11-20 10:20 3
2011-11-20 15:20 3

2011-11-21 12:20 1
2011-11-21 13:20 1
2011-11-21 11:20 2
2011-11-21 14:20 2
2011-11-21 10:20 3
2011-11-21 15:20 3

- for hvis det er én streng, vil klokkeslettet jo vinde over rute-nummeret - eller har jeg overset noget?
Avatar billede teepee Nybegynder
14. december 2011 - 11:30 #5
Opbyg datoen uden tid, konkatener ruten på, konkatener tiden på. Så kan du sortere korrekt.
Avatar billede angelenglen Nybegynder
14. december 2011 - 11:38 #6
Ah selvfølgelig. Jeg kan jo bare trække den samme værdi ud to gange, én gang hvor jeg kun bruger datoen, og en gang mere hvor jeg har hele klokkeslettet med også.

På den måde kan jeg bruge datoen til at sortere, og klokkeslettet når det skal vises for brugeren.

Prøv at smide et svar, så vil jeg se om jeg kan tildele dig nogle points :-)
Avatar billede teepee Nybegynder
14. december 2011 - 12:30 #7
Det er ok, bare du fik den hjælp, du skal bruge.
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
Computerworld tilbyder specialiserede kurser i database-management

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