Avatar billede sevinding Juniormester
26. november 2010 - 05:53 Der er 8 kommentarer og
1 løsning

Sortere i tid

Hej.
Jeg har flg. script:

$wins = mysql_query("SELECT
ec.id AS id,
ec.rytter AS rytter,
ec.tid AS tid,
ec.length AS length,
t.id AS rytterid,
t.name AS name,
t.flags AS flags,
t.logo AS logo,
SUM(ec.length) AS ialt,
SEC_TO_TIME(SUM(TIME_TO_SEC(tid))) AS sum,
3600*SUM(ec.length)/SUM(TIME_TO_SEC(ec.tid)) AS gns

FROM etapeclass AS ec

JOIN turen AS t

ON ec.rytter = t.id

WHERE ec.rytter = t.id

GROUP BY
    t.id
ORDER BY SUM ASC LIMIT 30

Når jeg så vil sortere på tid får jeg flg. udskrevet:

http://www.tourfacts.dk/tid_ialt1.php

I min tabel er tiden indsat som TIME, så jeg undrer mig over at det ikke er sorteret rigtigt.
Er der en barmhjertig sjæl der kan fortælle mig hvad der er galt?
Avatar billede r.hegaard Nybegynder
26. november 2010 - 09:18 #1
Er det ikke fordi du ikke sorterer på tid, men på sum, som nok ikke giver det samme?
Avatar billede majbom Novice
26. november 2010 - 09:41 #2
sorterer du direkte på feltet tid? uden nogle udregninger i mellem?
Avatar billede sevinding Juniormester
26. november 2010 - 10:16 #3
hej r.hegaard.
Jo, men det er sådan, at jeg lægger en masse tider sammen for at få SUM, og det er SUM jeg gerne vil udskrive.

splazz.
Jo jeg har jo: SEC_TO_TIME(SUM(TIME_TO_SEC(tid))) AS sum,
hvor detr jo er SUM jeg gerne vil sortere rigtigt.
Avatar billede r.hegaard Nybegynder
26. november 2010 - 10:45 #4
Men hvorfor sorterer du så ikke på sum?
Avatar billede sevinding Juniormester
26. november 2010 - 10:57 #5
Det er også det jeg gør, men det bliver ikke udskrevet i den rigtige rækkefølge. Jeg vil jo gerne udskrive 979:31:58 før eksempelvis 99:31:54 for at sortere fra højest til lavest tid.
Det gør det ikke på:
http://www.tourfacts.dk/tid_ialt1.php
hvor jeg sorterer på sum.
Avatar billede GooFY79 Nybegynder
26. november 2010 - 12:49 #6
Kunne det her være en løsning?:
Du laver en kolonne med TOTAL antal sekunder, og bruger den til at sortere med. Men lader være med at udskrive den.

$wins = mysql_query("SELECT
ec.id AS id,
ec.rytter AS rytter,
ec.tid AS tid,
ec.length AS length,
t.id AS rytterid,
t.name AS name,
t.flags AS flags,
t.logo AS logo,
SUM(ec.length) AS ialt,
SEC_TO_TIME(SUM(TIME_TO_SEC(tid))) AS sum,
SUM(TIME_TO_SEC(tid)) AS antal_sek,
3600*SUM(ec.length)/SUM(TIME_TO_SEC(ec.tid)) AS gns
FROM etapeclass AS ec
JOIN turen AS t
ON ec.rytter = t.id
WHERE ec.rytter = t.id
GROUP BY t.id
ORDER BY antal_sek ASC LIMIT 30
Avatar billede sevinding Juniormester
26. november 2010 - 15:00 #7
Hej GooFY79.
Det var lige det der skulle til.
Sender du et svar så jeg med glæde kan uddele point?
Avatar billede GooFY79 Nybegynder
26. november 2010 - 17:15 #8
Det var mit endelige svar ;)
Avatar billede The_Buzz Novice
26. november 2010 - 17:56 #9
Smider lige en kommentar så du kan læse lidt om MySQL og PHP tidsmåling: http://www.phptips.dk/Datoer_i_PHP_og_MySQL.tip
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