JOIN - Kommentare zählen

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

  • JOIN - Kommentare zählen

    Hallo,
    ich habe eine Tabelle News und eine Tabelle Kommentare.
    Zu jedem News kann man Kommentare schreiben, die denn in der Tabelle Kommentare abgespeichert werden.

    PHP-Code:
    $sql "SELECT 
                 news.id, 
                 news.user_id, 
                 news.beitrag_vorschau,  
                 DATE_FORMAT(news.write_date, '%d.%m.%y %H:%i') AS datum, 
                 news.edit_date, 
                 news.viewed, 
                 news.title, 
                 news.pic_name, 
                 news.url1, 
                 news.url2, 
                 news.url3, 
                 news.url4, 
                 news.url5, 
                 news.title1, 
                 news.title2, 
                 news.title3, 
                 news.title4, 
                 news.title5,
                 COUNT(com.news_id) AS anzahl_comment  
            FROM
                dm_news news
            LEFT JOIN dm_news_comment com ON com.news_id = news.id
            WHERE
                news.deleted = 0 
            AND
                com.deleted = 0
            GROUP BY com.news_id    
            ORDER BY news.write_date DESC 
                "
    .$limit.";"
    Das Problem bei diesem JOIN ist, das nur NEWS angezeigt werden, wenn auch Kommentare zu den jeweiligen News vorhanden sind.
    Info:
    deleted = 0 // freigeschaltet
    deleted = 1 // gelöscht

    Wie muß ich den JOIN verändern, damit auch news angezeigt werden, zu dennen keine Kommentare vorhanden sind?


    Gut geraten ist halb gewußt.

  • #2
    Es lag wohl am GROUP BY.
    Das mußte ich auf die News Tabelle beziehen

    PHP-Code:
    $sql "SELECT 
                 news.id, 
                 news.user_id, 
                 news.beitrag_vorschau,  
                 DATE_FORMAT(news.write_date, '%d.%m.%y %H:%i') AS datum, 
                 news.edit_date, 
                 news.viewed, 
                 news.title, 
                 news.pic_name, 
                 news.url1, 
                 news.url2, 
                 news.url3, 
                 news.url4, 
                 news.url5, 
                 news.title1, 
                 news.title2, 
                 news.title3, 
                 news.title4, 
                 news.title5,
                 COUNT(com.news_id) AS anzahl_comment  
            FROM
                dm_news news
            LEFT JOIN dm_news_comment com ON com.news_id = news.id
            WHERE
                news.deleted = 0 
            
            GROUP BY news.id    
            ORDER BY news.write_date DESC 
                "
    .$limit.";"
    So funktioniert die Abfrage.
    Aber wenn ich

    AND com.deleted = 0

    dazufüge, zeigt er wieder nur die News mit Kommentaren an. Auf die Spalte com.deleted möchte ich aber nicht verzichten.
    Wie kann ich ihm sagen, das er die Kommentare zähle, wenn welche vorhanden sind und "com.deleted = 0"?
    Gut geraten ist halb gewußt.

    Kommentar


    • #3
      Aha.
      Liegt es daran, das ich in diesem Fall:
      PHP-Code:
      LEFT JOIN dm_news_comment com ON com.news_id news.id AND com.deleted 
      schreiben muß?
      Also die WHERE Bedingung an dem JOIN anfügen?

      So geht es nämlich.
      Zuletzt geändert von martinm79; 07.11.2007, 10:10.
      Gut geraten ist halb gewußt.

      Kommentar


      • #4
        Da du einen left join verwendest, kann com.deleted auch NULL werden.
        Code:
        WHERE news.deleted = 0 
          AND ( com.deleted = 0 or com.deleted is null )
        sollte auch gehen.
        Die Abfrage direkt am join funktioniert, da an dieser Stelle noch Datensätze aus der Kommentartabelle selektiert werden. Im where ist diese Selektion bereits abgeschlossen und deleted evtl. NULL.

        Kommentar


        • #5
          Verstehe ich das jetzt richtig?

          Entweder frage ich das so wie ich habe, in der JOIN Zeile ab oder ich kann auch

          com.deleted is null

          verwenden?

          Danke schon mal.
          Gut geraten ist halb gewußt.

          Kommentar


          • #6
            Hier ist ein Thread, der die Grundlagen zu Joins etwas genauer aufführt. Zum Verständnis denke ich recht wertvoll.

            Kommentar

            Lädt...
            X