• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Anzahl ausgeben

Tobi44

Mitglied
Hallo,

diese Sache macht mich völlig fertig. Was ich erreichen will ist eigentlich ganz simpel, aber ich bin so dumm, dass ich es nicht hinkriege.

Ich habe zwei Tabellen, eine davon enthält Datensätze mit einer fortlaufenden einzigartigen ID. Die nächste Tabelle enthält Datensäzte, die als Zuordnung die ID des entsprechenden Eintrages aus der ersten Tabelle besitzen.
Für eine Art Forum habe ich also in der ersten Tabelle die Themen / Starttopics gespeichert. In der zweiten werden alle Beiträge zu den Topics gesammelt, die enthalten neben ihrer einzigartigen ID noch die ID zum Topic, als Zuordnung.
In der Forenübersicht möchte ich neben der Anzahl der enthaltenen Topics (das ist einfach) auch die Anzahl der enthaltenen Beiträge im gesamten entsprechenden Forum haben. Das kriege ich nicht hin, denn ich muss alle Einträge von Tabelle 2 zusammenzählen, die einem Topic aus diesem bestimmten Forum zugeordnet sind.

Meine erste Vermutung war, alle Themen IDs zu besorgen, die - in angenommen dem ersten Forum - vorhanden sind. Mit diesen IDs wollte ich dann alle Einträge aus Tabelle 2 zählen (mysql_num_rows), was ja dann als Ergebnis die Zahl der vorhandenen Beiträge aller Themen in Forum Nr. 1 wäre. Geht aber nicht, weil der Wert sozusagen alle Themen-IDs "in einem" enthält.
Mein Gedanke war dann, dass ich evtl. was mit foreach oder so machen muss? Komme da aber nicht weiter.

Vielleicht kann mir jemand einen Denkanstoß geben. Wie geht man soetwas an? War ich völlig falsch? Kann ich das evtl. sogar in einer einzigen SQL Abfrage lösen?

Vielen Dank und fühlt euch umarmt.
 
Hallo und danke für die Antwort.

Bei meiner Google Suche vorhin bin ich tatsächlich auch schon auf dieses mysql-Tut gestoßen und habe dort etwas von group by gelesen. Gelesen, allerdings nicht verstanden...

Nun stellt sich mir die Frage, wo Du das t1 und t2 hernimmst. Kann das nicht nachvollziehen.
 
Das sind nur Aliase für die Tabellennamen die das Statement visuell vereinfachen sollen ;)
 
Hmm, also ich blicke noch nicht ganz durch.

Habe nun folgendes:

$count_replies = mysql_query("SELECT COUNT(t2.id)
FROM forum_themen t1
JOIN forum_beitraege ON t1.forumid = t2.topicid
GROUP BY t1.id");
Das scheint nicht zu funktionieren.

In der Tabelle forum_themen gibt es die Spalte forumid, in der die ID des Forums gesetzt ist, in welchem das Topic sich befindet.
Dann habe ich in der Tabelle forum_beitraege die Spalte topicid, die die ID des Topics enthält, zu welchem der Beitrag gehört.
 
Du musst topicid aber der topicid aus forum_themen zuordnen. So wie Du es jetzt gemacht hast ist es inhaltlich falsch, da Du einen Beitrag einer ForenID-Zuordnungs, für die Du vermutlich keine Übereinstimmungen bekommen wirst.
 
Dann schau mal im PHP-Handbuch was mysql_query() als Ergebnis liefert und was man damit dann anfangen kann:
PHP: mysql_query - Manual

Beachte auch die Warnung dort bzgl. neueren Möglichkeiten auf MySQL-Daten zuzugreifen.
 
Ein mysql_num_rows($count_replies) gibt mir überall 11 aus, kA warum. Und mit mysql_fetch_assoc /_row /_array oder was auch immer wüsste ich nicht, wie ich damit an mein Ergebnis kommen sollte...
 
Zurück
Oben