Tani: Inner Join und count(*)

Hallo Forum, eine kleine Frage.

phpmyAdmin meckert bei dem count in folgender Query:

SELECT B.id, B.username AS 'Nickname', B.geschlecht AS 'Geschlecht', B.age, B.isonline, count(*) AS 'Kommentare' from präfix_tabelle2 AS A INNER JOIN präfix_tabelle2 AS B ON A.username=B.username ORDER BY Kommentare desc LIMIT 50;

Hab da schon allerlei Sachen ausprobiert:

A.count
count(A.*)
count('A.*)

was mache ich falsch?

Viele Grüße

  1. Ich glaube zwar das sowas generell nicht funktioniert, aber versuch es mal mit A.count(*) << hast du noch nicht aufgelistet.
    Ansosnten musst du das eben in zwei verschiedene Abfragen stecken.
    Gruß Artis

    1. Hallo, danke habe ich gerade auch probiert. Tut sich leider nichts.

      Ich habe mal die ganzen B's rausgenommen. Sprich, B.id, B.geschlecht usw. Er markiert das "count" zwar noch rot, aber gibt eine Spalte kommentare aus. Er hat dann halt die Summe der Zeilen dort reingeschrieben.

      Grüße

  2. yo,

    die GROUP BY KLausel fehlt.

    SELECT B.id, B.username AS Nickname, B.geschlecht AS Geschlecht, B.age, B.isonline, count(*) AS Kommentare
    FROM präfix_tabelle2 AS A
    INNER JOIN präfix_tabelle2 AS B ON A.username=B.username
    GROUP BY B.id, B.username AS Nickname, B.geschlecht AS Geschlecht, B.age, B.isonline
    ORDER BY Kommentare desc LIMIT 50;

    Ilja

    1. upps,

      das blöde copy & paste, GROUP BY klausel muss so auussehen:

      GROUP BY B.id, B.username , B.geschlecht, B.age, B.isonline

      eventuell will mysql die aliasnamen, bin mir da nicht sicher.

      Ilja

      1. Hey Ilja, danke es tut. Er markiert zwar das count(*) rot, aber die ausgabe passt. vielen dank nochmals :)
        da wäre ich nie und nimmer draufgekommen.

        grüße

      2. Hallo Ilja, müsste jetzt nocheinmal kurz stören. Kann ich in der Query noch problemlos um ein WHERE erweitern

        WHERE allowtoplist=1

        Das wäre dann in der Tabelle1. ??

        Grüße

        1. yo,

          Kann ich in der Query noch problemlos um ein WHERE erweitern
          WHERE allowtoplist=1

          grunsätzlich kannst du immer die where klausel verwenden. damit selektierst du eben bestimmte datensätze aus der entsprechenden tabelle. das group by und der count werden erst danach ausgeführt.

          Ilja

          1. Danke, es funktioniert auch prima.
            Vielen Dank für die Zeit die du extra für mich genommen hast :)

            Wenn du ein SQL Checker bist, dann hätte ich noch mehr fragen. Erst probiere ich mal, ob ich es hinkriege und schlage in der Doku nach, wenn nicht starte ich ein neues Thema :)

            Also viele Grüße aus Stuttgart :)
            Tani

            1. yo,

              Erst probiere ich mal, ob ich es hinkriege und schlage in der Doku nach, wenn nicht starte ich ein neues Thema :)

              besser du fragst hier im gleichen beitrag, sonst gibt es wieder ärger mit einigen ganz genauen.....

              Ilja