Avatar billede htx98i17 Professor
12. april 2002 - 17:17 Der er 10 kommentarer og
1 løsning

Beregn differencen

Poster i tbllog:
userid/mode/tid
123 1 20020412163230
123 2 20020412163235
123 1 20020412163420
123 2 20020412163425
123 1 20020412163620
123 2 20020412163625

Query:
SELECT SUM(UNIX_TIMESTAMP(m2.tid))-SUM(UNIX_TIMESTAMP(m1.tid)) AS diff FROM tbllog m1, tbllog m2 WHERE m1.mode = 1 AND m2.mode = 2 AND m1.userid = 123

Hvorfor giver differencen 45, når den burde give 15 ?
Avatar billede htx98i17 Professor
12. april 2002 - 18:24 #1
hmm ingen bud?

Kan det passe at den ikke kan lide "tbllog m1, tbllog m2"
altså at lave 2 labels for samme tabel...?
Avatar billede erikjacobsen Ekspert
12. april 2002 - 18:30 #2
Hvad er det dog du vil opnå ved det?
Avatar billede htx98i17 Professor
12. april 2002 - 18:35 #3
Egentlig blot hvor mange sek et barn har været til et arrangement...
Et barn beeber sig ind med en stregkodelæser når han kommer (mode 1) og beeber sig ud når han tager afsted (mode 2)
Så den skal regne ud hvor lang tid han har været til det arrangement...
Hvis det er forståeligt...
Avatar billede kimiwan Nybegynder
12. april 2002 - 18:38 #4
Du kan bruge DATE_SUB til at finde tidsforskellen i stedet
Avatar billede erikjacobsen Ekspert
12. april 2002 - 18:43 #5
Nåh, ja, børn.

Jeg tror ikke du kan i MySQL. Du kan lave en group by på mode,
og så lave en sum på tid for de 2 værdier, og så kan du i dit
program trække de to tal fra hinanden
Avatar billede htx98i17 Professor
12. april 2002 - 18:49 #6
kimiwan-> Kan du give et eksempel på hvordan date_sub() kan bruges i dette tilfælde?
Avatar billede erikjacobsen Ekspert
12. april 2002 - 18:52 #7
Du kan sagtens gøre det med UNIX_TIMESTAMP, htx
Avatar billede htx98i17 Professor
12. april 2002 - 18:55 #8
Jeg kan godt lave det med noget group by, men kunne nu godt tænke mig om det kunne laves noget ala det her:) ja jeg er stædig, men oss mere for at vide om det kan lade sig gøre, for så kunne det jo være man kunne bruge det en anden gang osse :)
Avatar billede erikjacobsen Ekspert
12. april 2002 - 18:57 #9
Er din tabel derimod

userid/tidind/tidud

så er det en anden sag :)
Avatar billede htx98i17 Professor
12. april 2002 - 18:59 #10
det jo det :)

en group by kunne se sådan ud:
SELECT SUM(UNIX_TIMESTAMP(tid)) as tid1 FROM tbllog WHERE userid = 123 GROUP BY mode

men vil gerne have værdien fra queryen, så jeg ik skal lave noget hips haps efter udtrækket...
Avatar billede htx98i17 Professor
15. april 2002 - 11:52 #11
Det lader ikke til at man kan give 2 labels til samme tabel, så løsningen bliver en group by... kimiwan, dit svar giver desværre ingen point denne gang.
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