[MySQL] Auslesen und summieren verschiedener Daten aus verschiedenen Tabellen

Johnnii360

Erfahrenes Mitglied
Servus zusammen!

Ich hoffe Ihr könnt mir helfen!? :)

Ich habe mein Problem schon in einem anderen Forum geschildert, aber nachdem ich da nur inkompetente Antworten von faulen Usern á la "Ich bin zu faul dir zu helfen und zu sagen wie es geht, also lese gefälligst das Manual - auch wenn du es nicht verstehst!" entgegen geworden wurden, komme ich doch lieber zu euch - hier wurde mir bisher gut geholfen.

Also, weg vom Leidklagen, hin zum Problem. ;)

Ich habe hier drei Tabellen. Einmal boards, threads und posts. Es handelt sich hier um ein Forum, aus dem ich meine Neuigkeiten auslese.

In der Tabelle threads lese ich alle Themen aus, die der boardID 25 untergeordnet sind. Das ist kein Problem. Nun kommt das knifflige. In der Tabelle posts befinden sich dann alle Beiträge zu den jeweiligen Themen (threads). Das Problem ist, dass die Beiträge keine boardID haben, sondern allein den threads (treadID) zugeteilt sind. So macht's mir schwer mit WHERE zu arbeiten.

Ich möchte bei dem Ganzen nur die Anzahl der vorhandenen Beiträge auslesen. Im anderen Forum sagte man mir, man könne es mit JOIN erledigen. Ich habe mir dann das Manual zu diesem Befehl angeschaut, sehe aber irgendwie keine Möglichkeit die Beiträge der Threads, die dem Board 25 untergeordnet sind, auszulesen. Dazu müssten ja dann erst alle Threads des Board 25 und dann die dazugehörigen Beiträge der jeweiligen Threads ausgelesen werden.

Wie das geht, habe ich leider keine Ahnung. Auch das Manual lässt mich irgendwie im Regen stehen.

Ich würde mich daher über Eure Hilfe sehr freuen!
 
Also, wir haben etwa das folgende

Code:
tablle Board
---------
boardID

tabelle threads
---------
boardID
threadID

tablle posts
---------
threadID
postID

Also, so schwer ist das nicht. Die Tabelle boards brauchen wir im Moment gar nicht. Die boardID haben wir je bereits in der Tabelle threads. Diese müssen wir nun mit der Tabelle posts verknüpfen. Dies geschieht wirklich über einen JOIN.

SQL:
SELECT
	threads.boardID,
	threads.threadID,
	posts.postID
FROM
	threads
	LEFT JOIN posts
		ON trheads.threadID = post.postID
Damit haben wir alle IDs zusammen. Die posts pro board zu zählen geht also dann etwa so (hab die Threads gleich mitgezählt)
SQL:
SELECT
	threads.boardID,
	COUNT(posts.postID) AS count_posts,
	COUNT(DISTINCT threads.trheadID) AS count_threads
FROM
	threads
	LEFT JOIN posts
		ON trheads.threadID = post.postID
GROUP BY threads.boardID
 
Zuletzt bearbeitet von einem Moderator:
Super, danke Dir für Deine Antwort!

Nur stellt sich mir noch die Frage, wie er nur die Threads mit der boardID 25 selektiert. Dann müsste ich doch dann einfach vor das GROUP BY ein WHERE threads.boardID='25', oder?

Es sollen ja nur die Posts der Threads gezählt werden, deren Threads der boardID 25 untergeordnet sind. Ei, was für eine wirre Beschreibung. xD
 
Also, ich habe jetzt mal alles angewandt. Leider wird mir nur bei dem Code hier die Anzahl der Threads und nicht der Posts angegeben.

PHP:
$kommentare = mysql_query("SELECT 
						  			
									wbb1_1_thread.threadID,
									wbb1_1_thread.boardID,
									wbb1_1_post.threadID,
									wbb1_1_post.postID,
									COUNT(wbb1_1_post.postID) AS count_posts 
									
						   	FROM 
						   			wbb1_1_thread
						   
						   	LEFT JOIN 
						   			
									wbb1_1_post
									
							ON 
									wbb1_1_thread.threadID=wbb1_1_post.postID
									
							WHERE 
							
									wbb1_1_thread.boardID='25' 
									
							GROUP BY 
							
									wbb1_1_thread.boardID") or print (mysql_error());

Edit: Ah, ich glaube es lag an "wbb1_1_thread.threadID=wbb1_1_post.postID". Ich habe nun "wbb1_1_thread.threadID=wbb1_1_post.threadID" draus gemacht und es geht. :)

Danke nochmal für die Hilfe!
 
Zuletzt bearbeitet:
Zurück