Avatar billede frets Nybegynder
11. november 2004 - 15:56 Der er 7 kommentarer og
1 løsning

Sorering af COUNT(ID) med GROUP BY

Jeg har en sql query hvor jeg gerne vil sortere efter min count værdi.

SELECT spillere.ID, spillere.SpillerNavn, spillerPladser.PladsNavn, spillere.plads, COUNT(spillerStats.kampID) AS kampe, SUM(spillerStats.maal) AS maal, Sum(spillerStats.gult) AS gult, Sum(spillerStats.roedt) AS rodt FROM spillerStats, spillerPladser INNER JOIN spillere ON spillerPladser.ID = spillere.Plads WHERE spillere.ID = spillerStats.spillerID AND spillere.holdID = 30 AND spillerStats.aar = 2004 GROUP BY COUNT(spillerStats.kampID) DESC

Dette giver gølgende fejl:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[MySQL][ODBC 3.51 Driver][mysqld-4.0.13-standard-log]Invalid use of group function

Hvordan fikser jeg den?
Avatar billede simonvalter Praktikant
11. november 2004 - 15:58 #1
skal du så ikke sige GROUP By kampe
Avatar billede frets Nybegynder
11. november 2004 - 15:59 #2
Har jeg prøvet:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[MySQL][ODBC 3.51 Driver][mysqld-4.0.13-standard-log]Can't group on 'kampe'
Avatar billede simonvalter Praktikant
11. november 2004 - 16:06 #3
så skal du vel ud i noget

select column, count(*) as count from test group by column order by count desc/asc;
Avatar billede frets Nybegynder
11. november 2004 - 16:10 #4
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[MySQL][ODBC 3.51 Driver][mysqld-4.0.13-standard-log]
Invalid use of group function

SELECT spillere.ID, spillere.SpillerNavn, spillerPladser.PladsNavn, spillere.plads, COUNT(spillerStats.kampID) AS kampe, SUM(spillerStats.maal) AS maal, Sum(spillerStats.gult) AS gult, Sum(spillerStats.roedt) AS rodt FROM spillerStats, spillerPladser INNER JOIN spillere ON spillerPladser.ID = spillere.Plads WHERE spillere.ID = spillerStats.spillerID AND spillere.holdID = 30 AND spillerStats.aar = 2004 GROUP BY spillere.Plads ORDER BY COUNT(spillerStats.kampID) DESC
Avatar billede simonvalter Praktikant
11. november 2004 - 16:15 #5
ja så ved jeg det ikke... jeg får hvad jeg vil have ud af det

mysql> select a, count(*) as count from test group by a order by count desc,a asc;
+------+-------+
| a    | count |
+------+-------+
| aaa  |    2 |
| 34la |    1 |
| bbb  |    1 |
| bla  |    1 |
| ccc  |    1 |
+------+-------+
Avatar billede simonvalter Praktikant
11. november 2004 - 16:24 #6
problemet er at du ikke bruger dit alias til at order by

så COUNT(spillerStats.kampID) skal være kampe
Avatar billede frets Nybegynder
11. november 2004 - 16:27 #7
Så virkede det... Tak for hjælpen.
Husk at smide et svar
Avatar billede simonvalter Praktikant
11. november 2004 - 16:27 #8
ok :)
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