Avatar billede steen-h Mester
17. maj 2013 - 17:15 Der er 8 kommentarer og
1 løsning

Select og 2 count

Jeg har en tabel med

dato  navn  forandring

det er 2 vægte jeg aflæser hver søndag.

Jeg har lavet så jeg henter forandring for hver vægte

SELECT  WEEKOFYEAR(DATE( FROM_UNIXTIME( `dato` ) )) AS valg , sum(`forandring`) AS antal FROM `veight` WHERE `navn` ='vaegt1' group by valg ORDER BY dato ASC

Det giver følgende

valg    antal
18     0.90
19     0.50
20     4.80
21     14.30

Nu vil jeg gerne have så jeg kan få udtræk fra begge vægte

valg  vaegt1  vaegt1

18    0.90    0.00
19    0.50    1.30
20    4.80    5.00
21  14.30  15.00

Hvordan gør jeg det ?
17. maj 2013 - 18:31 #1
Ikke testet, men kan du ikke bruge subselects?  Såsom:

SELECT  WEEKOFYEAR(DATE( FROM_UNIXTIME( `a.dato` ) )) AS valg,
(SELECT SUM(`forandring`) FROM `veight`     WHERE `navn` = 'vaegt1' AND WEEKOFYEAR(DATE( FROM_UNIXTIME( `dato` ) = WEEKOFYEAR(DATE( FROM_UNIXTIME( `a.dato` )) AS vaegt1,
(SELECT SUM(`forandring`) FROM `veight`     WHERE `navn` = 'vaegt2' AND WEEKOFYEAR(DATE( FROM_UNIXTIME( `dato` ) = WEEKOFYEAR(DATE( FROM_UNIXTIME( `a.dato` )) AS vaegt2
FROM `veight` AS a
GROUP BY valg
ORDER BY valg

Altså: du selecter ugenummeret fra tabellen, og derefter selecter du summen af forandringerne for navn vaegt1 for det samme ugenummer, og til slut selecter du summen af forandringerne for navn vaegt2, igen for de samme ugenumre.  Fordi du bruger tabellen flere gange er du nødt til at give den en alias første gang, jeg brugte aliasen a.
Avatar billede steen-h Mester
17. maj 2013 - 18:44 #2
Der er en fejl

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `veight` AS a GROUP BY valg ORDER BY valg' at line 4
Avatar billede steen-h Mester
17. maj 2013 - 18:52 #3
Mangler der ikke en WHERE
17. maj 2013 - 18:58 #4
Det er vist antallet af begyndelses- og slut paranteser der er ude af balance.  Jeg står og skal afsted, jeg skal kikke på det senere på aftenen.
Avatar billede steen-h Mester
17. maj 2013 - 19:00 #5
Tak for det
Avatar billede steen-h Mester
17. maj 2013 - 20:25 #6
Nu har jeg fået det til at virke.

SELECT  WEEKOFYEAR(DATE( FROM_UNIXTIME( `dato` ) )) AS valg  ,
(SELECT sum(`forandring`)  FROM `veight`    WHERE  `navn` = 'vaegt1' AND WEEKOFYEAR(DATE( FROM_UNIXTIME( `dato` ) )) = valg )AS vaegt1,
(SELECT sum(`forandring`)  FROM `veight`  WHERE `navn` = 'vaegt2' AND WEEKOFYEAR(DATE( FROM_UNIXTIME( `dato` ) )) = valg )AS vaegt2
FROM `veight` AS a WHERE `dato` > '1364707120'
GROUP BY valg
ORDER BY valg

Jeg har bare et problem.
Jeg har sat en dato ind, det virker fint for vaegt2 men ikke vaegt1

13     0.10     0.00
14     -2.70     -1.30
15     0.00     -0.10
16     -1.00     -0.50
17     -0.30     -0.70
18     0.90     0.00
19     0.50     0.40

problemet er at jeg har vejedata for uge 18 og 19 fra sidste år fra vaegt 1.

Hvordan løser jeg det ?
Avatar billede steen-h Mester
17. maj 2013 - 20:37 #7
SELECT  WEEKOFYEAR(DATE( FROM_UNIXTIME( `dato` ) )) AS valg  , `dato` AS dato,
(SELECT sum(`forandring`)  FROM `veight`    WHERE `dato` > '1364707120' AND `navn` = 'vaegt1' AND WEEKOFYEAR(DATE( FROM_UNIXTIME( `dato` ) )) = valg ) AS vaegt1,
(SELECT sum(`forandring`)  FROM `veight`  WHERE `dato` > '1364707120' AND `navn` = 'vaegt2' AND WEEKOFYEAR(DATE( FROM_UNIXTIME( `dato` ) )) = valg ) AS vaegt2
FROM `veight` AS a WHERE `dato` > '1364707120'
GROUP BY valg
ORDER BY valg ASC

Mange tak for hjælpen, læg et svar.
17. maj 2013 - 23:50 #8
Det var vist hjælp til selvhjælp.  Det var godt, for jeg er lige kommet hjem, og selskabet var vist for muntert til at jeg nu kunne gå ind i problemløsnings-mode.
Avatar billede steen-h Mester
18. maj 2013 - 07:09 #9
Du viste vejen :-)
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