Forum-Statistik

Scope

Erfahrenes Mitglied
Ich habe für mein Forum folgende Tabellen:

b_subjects -> Die Foren (mit ID)
b_threads -> Die Threads (mit subject, wegen zugehörigkeit, und ID)
b_posts -> Die Posts ( mit thread, wegen zugehörigkeit, und ID)

Jetzt hätt ich gerne für die erste Seite eine Übersicht pro Forum mit Anzahl der Threads und Posts.
Bisher durchlaufe ich jedes subject einzeln und in der schleife noch mal die Treads um Threads und Posts zu zählen.

Nun hätte ich das gerne mit einem query zurück.
Aber wie?
Hab schon viel rumprobiert, bin aber nicht so gut in mySQL.
(btw: die quellen in dem thread über joins hab ich mir durchgelesen.)

scope.
 
ich vermute mal die id ist das verbindene element

und wenn du nur die menge haben möchtes:

select sum(b_threads.id) from b_threads left join b_subjects on b_threads.id=b_subjects.id group by b_threads.id;

dat gleiche mit b_post sind 2 querys sorry :)
 
Nicht ganz:

b_subjects:
ID-> Primärschlüssel

b_threads:
ID->Primärschlüssel
subject->Zugehörigkeit zu einem subject anhand der ID aus Tabelle b_subjects

b_posts
ID->Primärschlüssel
thread->Zugehörigkeit zu einem thread anhand der ID aus Tabelle b_threads

Bis jetzt hab ich das:

PHP:
SELECT DISTINCT COUNT(B.ID) as countt, A.name, COUNT(C.ID) AS countp, 
	FROM b_threads AS B 
	RIGHT OUTER JOIN
	b_subjects AS A ON A.ID = B.subject
	LEFT OUTER JOIN
	b_posts AS C ON C.thread = B.ID
	GROUP BY A.ID;

Aber countt und countp geben immer das selbe zurück, nämlich die Anzahl der Posts (d.h Einträge in b_posts, die zu einem Thread gehören, der wiederrum im gerade durchlaufenen subject ist)

Ich möchte aber in countt (count threads) die Summer der Threads haben, die die als subject die ID des aktuellen subjects haben.

Konnte man das verstehen, wirkt für mich sehr schwer zu verstehen.

scope.

edit: irgendwie glaube ich, dass er irgendwas in dem query überschreibt, denn wenn man:
PHP:
SELECT DISTINCT COUNT(B.ID) as countt, A.name, 
	FROM b_threads AS B 
	RIGHT OUTER JOIN
	b_subjects AS A ON A.ID = B.subject

	GROUP BY A.ID;
schreibt, gibt er die Anzahl an Threads an.
 
Zuletzt bearbeitet:
hey..

du musst die queries auseinander nehmen.. es klappt nicht, wenn du zwei count() in einem query hast. er wird dir dann in beiden count() die anzahl rows zurückgeben, die er gefunden hat...

ich denke, die queries bekommst du schon hin..

greetings para
 

Neue Beiträge

Zurück