Avatar billede PHPnQrd Nybegynder
26. oktober 2011 - 10:47 Der er 9 kommentarer og
1 løsning

Group by 2 felter?

Hej, denne her mysql string vil jeg gerne have den siger GROUP BY b.tester_id også, men man kan jo ikke lave 2 group by, hvad gør jeg?

SELECT a.*, SUM(b.done) as antal_accepteret FROM test a LEFT JOIN accepteret b ON a.aktiv = 1  AND b.opgave_id=a.id GROUP BY a.id

Den skal sige group by a.id, ellers viser den de samme opgaver igen og igen, men skifter jeg til group by b.tester_id, viser den de samme opgaver, men viser tester_id group rigtigt.

Så: Hvordan laver jeg 2 gange group by?
Avatar billede michael_stim Ekspert
26. oktober 2011 - 11:37 #1
SELECT a.*, SUM(b.done) as antal_accepteret FROM test a LEFT JOIN accepteret b ON a.aktiv = 1  AND b.opgave_id=a.id GROUP BY a.id, b.tester_id
Avatar billede michael_stim Ekspert
26. oktober 2011 - 11:38 #2
Men du skal jo også have b.tester_id med i din forespørgsel ;o)
Avatar billede PHPnQrd Nybegynder
26. oktober 2011 - 13:34 #3
b.tester_id er jo i accepteret tabellen:

Jeg prøver:
SELECT a.*, SUM(b.done) as antal_accepteret FROM brugertest_test a LEFT JOIN brugertest_accepteret b ON a.aktiv = 1  AND b.opgave_id=a.id GROUP BY a.id, b.tester_id

Men den group'er stadigvæk ikke på tester_id
Avatar billede michael_stim Ekspert
26. oktober 2011 - 15:29 #4
Men det giver jo ingen mening at gruppere, sortere osv, når det ikke er med i forespørgselen:

SELECT a.*, SUM(b.done) as antal_accepteret, b.tester_id FROM brugertest_test a LEFT JOIN brugertest_accepteret b ON a.aktiv = 1  AND b.opgave_id=a.id GROUP BY a.id, b.tester_id
Avatar billede PHPnQrd Nybegynder
26. oktober 2011 - 15:30 #5
den grupere stadig ikke på a.id
Avatar billede majbom Novice
26. oktober 2011 - 15:40 #6
hvordan ser dine to tabeller ud?
Avatar billede PHPnQrd Nybegynder
26. oktober 2011 - 15:41 #7
Det er fordi brugertest_accepteret kommer til at have dobbelt post, dvs. den ikke tæller korrekt ved SUM(...) i min query, så skal også group på b.tester_id, så den ikke SUMMER for den samme.
Avatar billede showsource Seniormester
27. oktober 2011 - 09:02 #8
Uden at ha' læst alt her, så kan du jo godt "GROUP BY" flere en et felt, ligesom med ORDER BY
GROUP BY felt_et, felt_to
Avatar billede PHPnQrd Nybegynder
27. oktober 2011 - 16:33 #9
Ok, men det er i optælling ved SUM den kun skal tælle de unikke og ikke alle. Dvs. ikke dem der er de samme af, så i form af:

SELECT a.*, SUM(b.done GROUP BY tester_id) as antal_accepteret  FROM test a LEFT JOIN accepteret b ON a.aktiv = 1  AND b.opgave_id=a.id GROUP BY a.id, b.tester_id
Avatar billede PHPnQrd Nybegynder
27. oktober 2011 - 19:47 #10
d
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