Peter: Nach Anzahl des Vorkommens ausgeben

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

  1. 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..

  2. Hallo,

    vllt hilft dir das weiter http://forum.de.selfhtml.org/archiv/2008/8/t175461/#m1153411

    bye trunx

    --
    Die Standard-Antwort: "Bitte benutze die Forum-Suche!" macht die Forum-Suche kaputt, weil die Suche dann nämlich genau vor allem diese dämliche Standard-Antwort, also Müll liefert. Sinnvoller ist stattdessen folgende Standard-Antwort: "Dieses Thema wurde schon vielfach im Forum besprochen, siehe z.B. <a>hier</a> oder <a>hier</a> oder benutze die Forum-Suche z.B. mit den Stichworten 'Stichwort1 Stichwort2'." Danke.
    1. Hallo,

      vllt hilft dir das weiter http://forum.de.selfhtml.org/archiv/2008/8/t175461/#m1153411

      bye trunx

      Danke. TOP! Hat geholfen ;)

      lg

  3. 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

    1. 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 =(.

      1. Klappt leider nicht =(.

        gibt es eine Fehlermeldung?