Newsbeiträge und Anzahl Kommentare in einem Query

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

  • Newsbeiträge und Anzahl Kommentare in einem Query

    Hallo,

    es ärgert mich zwar das ich das fragen muss weil ich mich selbst wohl zuwenig mit MYsql auskenne aber gut.
    folgendes Problem:

    Ich habe eine Tabelle mit Artikeln und eine Tabelle mit Artikelkommentaren wo bei jedem Kommentar die Artikelid gespeichert ist.

    Ich möchte nun mit EINEM query die Artikel und die Anzahl der Kommentare auslesen. Wie man das mit 2 Queries machen kann ist mir klar, aus performance Gründen möchte ich aber soviele Queries wie möglich sparen und ich denke das geht an dieser Stelle sicherlich.

    Hier der jetzige Query:
    PHP-Code:
    $this->sql->dosql("SELECT 
                                                         article.id,
                                                         article.topic,
                                                         article.text,
                                                         article.tstamp,
                                                         user.id AS uid
                                                 FROM
                                                         article
                                                 INNER JOIN
                                                         user
                                                 ON
                                                         article.uid = user.id
                                                 ORDER BY
                                                         tstamp DESC"
    ); 
    Die Kommentar Tabelle heisst article_comments und hat ein feld aid wo die Artikelid drinsteht.

    Danke schonmal im vorraus
    Zuletzt geändert von kaguya; 22.09.2005, 19:30.

  • #2
    Re: Newsbeiträge und Anzahl Kommentare in einem Query

    So ziemlich das selbe habe ich auch schon mal gefragt:
    http://www.php-resource.de/forum/sho...threadid=47109
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      hm bringt mich auch nicht wirklich weiter,
      ich weiss zwar wie ein inner join und ein outer join funktioniert, aber left join sagt mir wieder wenig genauso wie distinct

      so gehts jedenfalls nicht:
      PHP-Code:
      $this->sql->dosql("SELECT 
                                                           article.id,
                                                           article.topic,
                                                           article.text,
                                                           article.tstamp,
                                                           user.id AS uid,
                                                           COUNT(article_comments.id) as Anz
                                                   FROM
                                                           article
                                                   INNER JOIN
                                                           user
                                                   ON
                                                           article.uid = user.id
                                                   LEFT JOIN
                                                           article_comments
                                               ON
                                                       article.id = article_comments.aid
                                                   ORDER BY
                                                           tstamp DESC"
      ); 
      Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause

      Kommentar


      • #4
        dann probier anstatt "ORDER BY" einfach "GROUP BY" , das sollte helfen.

        Kommentar


        • #5
          tatsache das funzt, gut dann muss ich mal nachlesen was der Left Join genau tut und wieso man keinen inner und outer gleichzeitig machen kann

          kann mir jemand erklären warum der zweite ein left join sein muss ? und warum man nicht zweimal inner machen kann, oder left inner gibts ja auch noch ? blick cih nich sorecht durch, nen normalen inner ist klar, aber wie so ein LEFT danach und wieso gehen alle anderen nicht ?
          Zuletzt geändert von kaguya; 22.09.2005, 22:37.

          Kommentar

          Lädt...
          X