Join mit 2 Bedingungen

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

  • Join mit 2 Bedingungen

    Hi,

    ich habe mich erneut festgebissen und hoffe das jemand helfen kann.

    Habe 2 Tabellen. Tab1 stehen News drin, Tab2 stehen Kommentare zu den News.

    Nun moechte ich gerne aus Tab1 alle Newstitel auslesen und per Join die passenden Kommentare zaehlen, die dann in Klammern unter dem Titel stehen.

    Eigentlich kein Problem, nur das News und Kommnetare auch offline sein koennen. Es duerfen also nur die News angezeigt werden, die auch online sind und nur die Kommentare gezaehlt werden, die auch online sind.


    PHP-Code:
    $sql="SELECT COUNT(CommentID) as CommentsAmount,  tblArticles.ArticleTitle 
     FROM tblArticles  
    LEFT JOIN tblComments ON tblArticles.ArticleID=tblComments.ArticleID WHERE 
     tblArticles.ArticleStatus='Online'  GROUP BY tblArticles.ArticleID"

    So zaehlt er alle Kommentare, auch wenn sie offline sind. Schreibe ich
    AND tblComments.CommentStatus='Online'

    stimmt zwar die Anzahl, aber es werden nur noch die News ausgegeben, die auch einen Kommentar haben. Das passt einfach nicht. Auch ein INNER oder RIGHT Join passt nicht.

    Hat jemand einen Tip, wie man das elegant in einer Abfrage packen kann? Das muss doch gehen, in einem anderem Forum wusste leider keine eine Loesung, aber vielleicht hier. Vielen Dank im Voraus.

  • #2
    Joine die Kommentartabelle einfach noch ein zweites Mal und bestimme darüber den Count.

    Kommentar


    • #3
      Meinst Du einen komplett zweiten query oder innerhalb von diesem? Wenn es innerhalb von diesem sein soll (und das soll es ja) wie koennte das dann aussehen?

      Kommentar


      • #4
        Oh entschuldige bitte, ich hatte dich mißverstanden. Versuchs mal hiermit:

        SELECT a.ArticleTitle, COUNT(c.CommentID) as CommentsAmount,
        FROM tblArticles a
        LEFT JOIN tblComments c ON (a.ArticleID = c.ArticleID AND a.ArticleStatus='Online')
        GROUP BY a.ArticleID

        Kommentar


        • #5
          Nee, leider nicht. Jetzt zeigt er alle News auch die die offline sind und zaehlt alle Kommentare auch die die offline sind.

          Es duerfen aber nur
          a) News anzeigen wenn Status online
          b) Zaehle alle Kommentare zu der jeweiligen News aber nur wenn Kommenar auf online steht

          Kommentar


          • #6
            So jetzt habe ich doch ne Loesung gefunden.

            PHP-Code:
            $sql="SELECT a.ArticleTitle, COUNT(c.CommentID) as CommentsAmount 

            FROM tblArticles a 

            LEFT JOIN tblComments c ON (a.ArticleID = c.ArticleID 
            AND c.CommentStatus='online')

            WHERE a.ArticleStatus ='online'
            GROUP BY a.ArticleID 
            Vielen Dank onemorenerd fuer den Ansatz.

            Gruss Luka

            Kommentar

            Lädt...
            X