Avatar billede Droa Seniormester
17. november 2010 - 12:37 Der er 11 kommentarer og
1 løsning

lave group by af noget som allerede er grouped?

Jeg har et langt udtræk jeg har grouperet, som betyder jeg ikke får nogen vigtige data, og ville høre om jeg kunne få dem fra SQL eller om jeg skal til og kode det i PHP og hente alle daterne?

f.eks har jeg 3 rækker som er enum('yes','no') hver jeg gerne ville have samlet antalt yes, i alle 3 kolonner, i hvert set resultat.

kan man det?
Avatar billede mrgumble Nybegynder
17. november 2010 - 13:12 #1
Prøv at komme med et eksempel på dine data og et eksempel på det resultat du er ude efter.
Avatar billede ggxdg Nybegynder
17. november 2010 - 14:43 #2
Det kan du nok godt.

Som mrgumble siger ville det være rart med et eksempel, men du kan sikkert lave noget med nogle subqueries og/eller noget concanate-halløj...

Men data og resultat eksempel :P
Avatar billede Droa Seniormester
22. november 2010 - 07:39 #3
undskyld for det lange svar, men har ikke haft den tid det tog og lave et exempel før.. så nu kommer det, håber i stadig kan hjælpe

ID    Col1    Col2    Col3    Col4
1    yes    no    yes    Group2
2    no    yes    yes    Group1
3    no    no    yes    Group2
4    yes    yes    yes    Group2
5    yes    yes    no    Group1


Group by Col4

Result:
Col4    Col1    Col2    Col3
Group1    3    3    4
Avatar billede Droa Seniormester
22. november 2010 - 07:40 #4
undskyld, resultat var forkert.. her kommer det igen.


ID    Col1    Col2    Col3    Col4
1    yes        no        yes        Group2
2    no        yes        yes        Group1
3    no        no        yes        Group2
4    yes        yes        yes        Group2
5    yes        yes        no        Group1


Group by Col4

Result:
Col4    Col1    Col2    Col3
Group1    1        2        1
Group2    2        1        3
Avatar billede Droa Seniormester
22. november 2010 - 07:42 #5
jeg troede man kunne bruge Count med Where syntax, der ville redde min dag..

Count(WHERE Col1 = 'yes') as Col1
Avatar billede arne_v Ekspert
23. november 2010 - 00:03 #6
prøv:

SELECT col4,SUM(IF(col1,1,0)),SUM(IF(col2,1,0)),SUM(IF(col3,1,0))
FROM dintabel
GROUP BY col4
Avatar billede Droa Seniormester
23. november 2010 - 06:52 #7
nu har jeg aldrig hørt om IF() eller IF før, så søgte meget om det , for og lære det og kende, siden det lyder som et fantastiskt værktøj til SQL..

men ikke ofr og disse dit svar arne_v, siden du er min religion og gud, da jeg er blevet opdraget med svar fra dig, igennem snart 7 år på eksperten.dk.

men bare for og forstå IF()

IF(col1,1,0) tjekker den ikke kun for true/false?

er det så ikke

IF(col1='yes',1,0)

det skal være istedet for?


nu har jeg endnu ikke afprøvet det, da jeg ikke har tid før senere idag, men det are bare for og forstå hvordan man brugte IF jeg spurgte
Avatar billede arne_v Ekspert
23. november 2010 - 15:13 #8
Jo.

Hvis col1-col3 er VARCHAR og ikke BOOLEAN, saa skal du test som du viser.

IF er en simpel udgave af den mere generelle CASE WHEN.
Avatar billede Droa Seniormester
23. november 2010 - 20:28 #9
du har endnu engang vist at man kan hvide alt, mange tak for dit svar, har aldrig troet man ville kunne bruge logik i SQL, før du har sagt det.

ligger du er svar?
Avatar billede arne_v Ekspert
23. november 2010 - 20:31 #10
kommer her
Avatar billede arne_v Ekspert
23. november 2010 - 20:32 #11
SQL er ikke altid det rigtige til logik, men det her er ikke vaerre end at SQL godt kan vaere med.
Avatar billede Droa Seniormester
23. november 2010 - 20:36 #12
jeg er bare sådan lidt OCD med data.. at de skal ligge rene og i tabeller :)
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