Avatar billede neocron Nybegynder
06. september 2007 - 21:58 Der er 7 kommentarer og
1 løsning

Mærkelig opførsel fra query

Hejsa,
Jeg sidder med et problem som jeg har lidt svært ved at forstå.
Betragt følgende query:

SELECT TIME_FORMAT(SUM(forbrugt_tid), '%k timer og %i min') FROM aktiv_sag

FORBRUGT_TID er af typen TIME (tt:mm:ss) og det som den skal gøre er at tage samtlige rækker i TIME, lægger dem sammen og få et læseligt tal ud af det.

Problemet er, at det virker i flæng. Nogle gange gør det ikke og andre gange returnerer den intet. Jeg har ikke fundet ud af HVAD det er, som forhindrer den - men jeg har fundet ud af så meget at det er queryen i sig selv. Jeg prøvede at teste samme funktion i et selvstændigt PHP dokument, altså uden interaktion fra anden PHP kode - giver samme resultat.

Jeg har fundet ud af at queryen returnerer NULL ihvertfald.
Hvis jeg simplificerer den lidt og lader den virker på én række der der ingen problem:

SELECT TIME_FORMAT(forbrugt_tid, '%k timer og %i min' ) FROM aktiv_sag WHERE id = 2
= (eksempel) "2 timer og 50 min".

Er det mit mix af TIME_FORMAT og SUM der giver problemer eller er årsagen et helt andet sted? Håber I kan hjælpe.

Jeg uddyber gerne yderligere om nødvendigt.
Avatar billede erikjacobsen Ekspert
06. september 2007 - 22:03 #1
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_sum lidt længere nede:

For what it's worth, the SUM() function does not
work on TIME values directly, although it appears
to work at first glance. To add a bunch of TIME
values (intervals, presumably), you need to do
something like this:

SEC_TO_TIME(SUM(TIME_TO_SEC(events.length)))

This will return another TIME value, suitable for
TIME_FORMAT() or whatever else.
Avatar billede neocron Nybegynder
06. september 2007 - 22:22 #2
YDEREST INTERESSANT!
Det var sgu lige på, Erik. Det løste problemet.
Hvis jeg kunne havde jeg givet en øl, for jeg var tæt på at placere min SQL server foran en henrettelsesplaton :)
Avatar billede erikjacobsen Ekspert
06. september 2007 - 22:23 #3
Det kan da være du kan det en dag ;)  Ellers: ingen point til mig, svar selv, accepter eget svar. Og læg evt gerne din egen løsning af problemet.
Avatar billede erikjacobsen Ekspert
06. september 2007 - 22:26 #4
Næste gang skal du nok true den med en henrettelsespeloton  ;)
Avatar billede neocron Nybegynder
06. september 2007 - 22:46 #5
Løsningen var simpel at implementere - det udfordrende var at FINDE den :)
Jamen du må jo kigge forbi det nordjyske kontinent og slå på tråden hehe!

Platon, Peloton, alle de fremmedord. Lad os bare være bondsk og sige at den får et skud hagl :)

Funktionel løsning:

SELECT TIME_FORMAT(SEC_TO_TIME(SUM(TIME_TO_SEC(forbrugt_tid))), '%k timer og %i min') FROM aktiv_sag
Avatar billede erikjacobsen Ekspert
06. september 2007 - 23:06 #6
Så må vi se hvornår jeg næste gang kommer på de kanter. En uge i sommerferien blev brugt i Løkken, Fjerritslev, Fårup Sommerland, Hirtshals, Skagen, Ålborg, etc. http://picasaweb.google.dk/erikjacobsen/LKken2007 Faktisk er jeg halv nordjyde ;)
Avatar billede neocron Nybegynder
06. september 2007 - 23:17 #7
Interessant :) Jamen skriv da evt. på MSN, klaus@brightstorm.net hvis det er. Kunne da være sjovt.
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



IT-JOB