order by
Jo
- datenbank
0 Yeti0 Jo0 Tobias Kloth0 Yeti0 Tobias Kloth0 Yeti
Hallo zusammen!
Folgende MYSQL-Anweisung liefert mir für jeden Namen die Anzahl der Beiträge.
SELECT name,COUNT(name) FROM tabelle GROUP by name ORDER BY name
Ich würde nur gerne das ganze nach der Anzahl geordnet haben. "ORDER BY COUNT(name)" bringt eine Fehlermeldung.
Kann man das direkt im MySQL-Ausdruck ordnen oder muss ich das Ergebnis in PHP sortieren?
Grüße und schon mal Danke1
Jo
Hi,
Kann man das direkt im MySQL-Ausdruck ordnen oder muss ich das Ergebnis in PHP sortieren?
Du kannst entweder ORDER BY COUNT(name)
oder vielleicht auch COUNT( name )
(mit den backticks) schreiben oder (schöner) das Ergebnis umbenennen, z.B. so:
SELECT name,COUNT(name) anzahl FROM tabelle GROUP by name ORDER BY anzahl
Der Yeti
Danke Yeti!
Funktioniert wunderbar!
Und die Lösung kommt schneller als ich die Frage tippem kann :-)
Grüßle
Hallo Yeti,
Du kannst entweder ORDER BY
COUNT(name)
oder vielleicht auchCOUNT( name )
(mit den backticks) schreiben
nein, kann er nicht. Wenn du "ORDER BY COUNT(name)
" verwendest, sucht MySql zum Sortieren nach einer Spalte namens "COUNT(name)" die natürlich nicht gefunden wird.
Grüße aus Nürnberg
Tobias
Hi,
Du kannst entweder ORDER BY
COUNT(name)
oder vielleicht auchCOUNT( name )
(mit den backticks) schreiben
nein, kann er nicht. Wenn du "ORDER BYCOUNT(name)
" verwendest, sucht MySql zum Sortieren nach einer Spalte namens "COUNT(name)" die natürlich nicht gefunden wird.
Ist das deine Hypothese oder hast du sie auch irgendwie überprüft? Also bei mir klappt es wunderbar (JPEG, 54,3 KB).
Warum sollte sie auch nicht gefunden werden? Schließlich heißt die Ergebnisspalte doch genau so wie das Sortierungskriterium. Das bedeutet zwar, dass der SQL-Server das Sortieren nach dem Gruppieren und Zählen ausführen muss, aber ein durchschnittlich fitter Optimierer sollte das ohne Probleme schaffen. MySQL kann es jedenfalls.
Der Yeti
Hallo Yeti,
nein, kann er nicht. Wenn du "ORDER BY
COUNT(name)
" verwendest, sucht MySql zum Sortieren nach einer Spalte namens "COUNT(name)" die natürlich nicht gefunden wird.
Ist das deine Hypothese oder hast du sie auch irgendwie überprüft?
ja, habe ich.
Also bei mir klappt es wunderbar (JPEG, 54,3 KB).
Welche MySql-Version hast du denn? Bei mir (4.0.24) gibt der gleiche Query nur die Meldung "Unknown column 'COUNT(*)' in 'order clause'" ...
Grüße aus Nürnberg
Tobias
Hi,
Also bei mir klappt es wunderbar (JPEG, 54,3 KB).
Welche MySql-Version hast du denn? Bei mir (4.0.24) gibt der gleiche Query nur die Meldung "Unknown column 'COUNT(*)' in 'order clause'" ...
Ich habe MySQL 4.1.10, kann aber keine Aussage über frühere Versionen treffen und die MySQL-Doku sagt auch nix darüber aus. Vielleicht liegt es auch einfach nur daran, dass du keine Leerzeichen verwendet hast, dann kommt der Fehler nämlich bei mir auch. COUNT( \* )
dagegen funktioniert (er wandelt das obere COUNT wohl intern um).
Der Yeti
Hallo Yeti,
Vielleicht liegt es auch einfach nur daran, dass du keine Leerzeichen verwendet hast, dann kommt der Fehler nämlich bei mir auch.
COUNT( \* )
dagegen funktioniert (er wandelt das obere COUNT wohl intern um).
ja, daran lag es - wenn ich noch Leerzeichen reinmache funktioniert es ...
Grüße aus Nürnberg
Tobias