26. oktober 2011 - 10:47Der 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.
Mød TrackMan og Veo på Computerworld Cloud & AI Festival og hør, hvordan tech ændrer måden, vi træner og udvikler talent – fra skolebold til The Masters.
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 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
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.
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
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.