Mehrere Joins mit mehreren Counts?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Mehrere Joins mit mehreren Counts?

    Hi, ich habe da ein Problem mit mehreren Joins und mehreren counts in einer Abfrage.

    Grundstruktur ist

    1. Tabelle news
    2. Tabelle review
    3. Tabelle redakteur


    Ich wollte jetzt zu jedem Redakteuer die anzahl der geschriebenen News und Reviews abrufen jedoch zeigt er bei mir dann immer die höchste Anzahl in der ABfrage bei jedem wert an

    meine Abfrage:

    SELECT redakteur.redakteur_id, count( review.redakteur_id ) , count( news.redakteur_id )
    FROM redakteur
    LEFT JOIN news ON redakteur.redakteur_id = news.redakteur_id
    LEFT JOIN review ON redakteur.redakteur_id = review.redakteur_id
    GROUP BY news.redakteur_id, review.redakteur_id
    LIMIT 0 , 30

  • #2
    Hallo fabs[NO]
    Der count zählt alle Zeilen nach dem Join und vor dem GROUP BY

    Versuch doch 'mal das:
    Die Anzahl der verschiedenen News= count(distinct(NewsID))

    Die news.redakteur_id eignet sich dann wohl nicht zum Zählen, du musst ein Feld nehmen, das pro news eindeutig ist.

    Kommentar


    • #3
      Ich würde COUNT(*) oder COUNT(1) als Zähler nehmen. kannst Auch mal den modifier ROLLUP anschauen.

      Kommentar


      • #4
        hi danke das mit distinct funktioniert super jedoch habe ich schon ein weiteres Problem

        wenn ich das ganze dann noch auf News und Reviews mit dem Status 1 oder 2 beschränken will (es gibt drei verschiedene "Status-Zahlen", 1 = aktiviert, 2=bearbeitung, 3=deaktiviert) hab ich hinten noch ein where status !=3 drann gehängt

        jedoch gibt er mir jetzt keine Redakteure mehr aus die in irgendeiner der counts 0 stehen haben ... gibts da eine Lösung?

        Kommentar

        Lädt...
        X