Nach Anzahl des Vorkommens ausgeben
Peter
- datenbank
Hallo.
Ich hab ein kleines Forum.
Nun möchte ich eine "TOP 10" der Poster machen.
Ein Beitrag(Tabelle beitraege) ist so aufgebaut "Titel, Beitrag, Datum, BenutzerID"
Ein User(Tabelle benutzer) ist so aufgebaut "BenutzerID, Name, E-Mail, PW"
Nun möchte ich das die 10 Leute mit den meisten Einträgen in "beitraege" aus der Tabelle "benutzer" auslesen.
Mein Versuch:
SELECT
benutzer.BenutzerID, benutzer.name, anz
FROM benutzer
JOIN beitraege ON COUNT(beitraege.BenutzerID) AS anz = benutzer.BENUTZERID
WHERE benutzer.BenutzerID!=''
ORDER BY anz DESC LIMIT 10
Hatte auch andere Versuche die aber nicht geklappt haben.
Wie kann ich das mit einem Query machen?
Liebe Grüße,
Peter
SELECT
benutzer.BenutzerID, benutzer.name, anz
FROM benutzer
JOIN beitraege ON COUNT(beitraege.BenutzerID) AS anz = benutzer.BENUTZERID
WHERE benutzer.BenutzerID!=''
ORDER BY anz DESC LIMIT 10
~~~sql
SELECT
benutzer.BenutzerID, benutzer.name, anz
FROM benutzer
JOIN beitraege ON COUNT(beitraege.BenutzerID) AS anz = benutzer.BenutzerID
WHERE benutzer.BenutzerID!=''
ORDER BY anz DESC LIMIT 10
so ist richtig. aber klappt nicht..
Hallo,
vllt hilft dir das weiter http://forum.de.selfhtml.org/archiv/2008/8/t175461/#m1153411
bye trunx
Hallo,
vllt hilft dir das weiter http://forum.de.selfhtml.org/archiv/2008/8/t175461/#m1153411
bye trunx
Danke. TOP! Hat geholfen ;)
lg
Wie wäre es mit:
SELECT
benutzer.BenutzerID, benutzer.name, COUNT(DISTINCT beitraege.BenutzerID) AS 'anz'
FROM
beitraege LEFT JOIN benutzer USING(BenutzerID)
GROUP BY
beitraege.BenutzerID
ORDER BY
anz DESC
LIMIT
10
Solche Queries sind allerdings langsam. Also du solltest sie cachen, wenn dein Forum größer ist.
Grüße
Jimboo
SELECT
benutzer.BenutzerID, benutzer.name, COUNT(DISTINCT beitraege.BenutzerID) AS 'anz'
FROM
beitraege LEFT JOIN benutzer USING(BenutzerID)
GROUP BY
beitraege.BenutzerID
ORDER BY
anz DESC
LIMIT
10
Klappt leider nicht =(.
Klappt leider nicht =(.
gibt es eine Fehlermeldung?