Vinzenz Mai: GROUP BY + COUNT ...

Beitrag lesen

Hallo

Mein Vorhaben: Ich möchte auf der Startseite meines Blogs zu jedem Eintrag stehen haben, wie viele diesen Eintrag schon kommentiert haben. Das ist für mich eine ziemliche Herausforderung, da ich schließlich die Namen der Blogeinträge nicht kenne und somit die Kommentare zu diesen nicht einfach rausfischen kann.

ein entsprechendes Tabellendesign vorausgesetzt und mit MySQL 4.1 sollte dies einfach mit einem Subquery zu lösen sein. Vielleicht ist eine Subquery noch nicht einmal nötig :-) Ähnliches haben wir hier mal für MySQL 3.23 hingekriegt,
siehe Archiv. Deine Mitarbeit vorausgesetzt, was kein Problem sein sollte, kriegen wir das schon hin.

Mit Hilfe der GROUP-BY-Klausel und der Aggregatsfunktion COUNT() sollte Dein Problem lösbar sein.

Meine Idee war, dass ich die Titel der Einträge abfrage und diese in einen Array schreibe. Danach kann ich dann in einer foreach-Schleife auf die Inhalte des Arrays zugreifen und diese dann in die MySQL-Abfrage einsetzen.

Nein, das ist normalerweise gar keine gute Idee. Mache nichts in der API, hier PHP, was SQL (hier der Dialekt von MySQL) selbst kann.

Du solltest in der Tabelle, in der Du deine Kommentare speicherst, einen Verweis auf den Beitrag unterbringen, den sie kommentieren. So etwas nennt man Fremdschlüssel und ist in http://tut.php-q.net/mysql-id.html ganz nett erklärt. Wenn es dann zu den Joins kommt, so finde ich die in SELFHTML aktuell gut erklärt:
Einführung Joins
Fortgeschrittene Jointechniken

Den zweiten Artikel wirst Du wahrscheinlich noch nicht brauchen.

Der Artikel Datensätze gruppieren mit SQL sollte Dir allerdings auch weiterhelfen.

Freundliche Grüße

Vinzenz