User mit den meisten Posts auslesen?

Hallo HaBo,

Irgendwie tu ich mich grad mit einem SQL-Statement schwer. Ich würde gern den User mit den meisten Einträgen auslesen.
Also ich habe folgende Tabelle posts

Code:
--theme_id---autor---time---post--

Und mein Ansatz war bis jetzt folgender:
Code:
SELECT autor FROM posts WHERE MAX(COUNT(autor));
Fehler hierzu wäre:

#1111 - Invalid use of group function

Jemand ne Idee wie man das lösen könnte bzw. was ich falsch mache?
 
So wie es scheint zählt count() nur die Anzahl der verschiedenen Autoren und nicht wie von dir beabsichtigt die Anzahl der Beiträge pro Autor: Link
 
Versuche mal die Sachen zu gruppieren und dann zu zählen, denn Aggregatfunktionen (MAX,AVG usw) machen im WHERE Teil erstmal keinen Sinn. Versuche mal mit:
Code:
SELECT autor,count(autor)as 'Anzahl' 
FROM posts
GROUP BY autor 
ORDER BY Anzahl DESC LIMIT 1;
das macht folgendes:
gruppiert die Einträge erstmal nach Autoren - bildet also "untergruppen" mit dem gleichen Autor und zählt die Einträge jeder Untergruppe (also praktisch Postanzahl).
Wenn man nun das Ergebnis sortiert und den ersten Eintrag auswählt, hat man den User mit den meisten Beiträgen.
 
Hallo,
wobei erwähnt werden sollte, dass dieses SQL Statement vermutlich extrem langsam ist und wahrscheinlich MySQL die ganze DB dafür untersuchen muss.

Eine evt. Umstrukturierung der DB würde helfen.
 
@CDW: Super das funktioniert! Auch danke dass du nochmal erklärt hast was du da gemacht hast :)

@Elderan: Da ich die DB nur privat nutze ist das nicht dringend notwendig aber es stimmt schon die Anfrage dauert im Schnitt 0.1 Sek.
 
ich würde einfach zum eintrag des users in der DB eine weitere variable dazumachen, die die anzahl der posts enthält. Diesen Wert dann bei jedem neuen Post inkrementieren.
Einmal musst du allerdings die bisherigen Posts mit der oben beschrieben Methode zählen und dann die aktuelle postzahl da reinschreiben, wenn nicht alle jetzt wieder bei 0 anfangen sollen :)
 
Zurück
Oben