Joins mit mehreren Tabellen

jarkand

Grünschnabel
Hallo liebe MySQL Freunde,

in den letzten drei Tagen haben ich mich durch etwa 120 Web Seiten durchgeackert, dieses und andere Foren durchforstet und etwa 3.000 Variationen einer Abfrage über mehrere Tabellen mit LEFT JOINS, INNER JOINS, LEFT OUTER etc. etc.

Die Funktionsweise eines Joins ist mir mittlerweile klar aber trotz all dem erhalte ich nicht die richtige bzw. gewünschte Ergebnismenge zurück. Mittlerweile habe ich das Gefühl das mit meinem DB Layout vielleicht etwas nicht stimmt und ich dort den Fehler habe und aus diesem Grund es nicht funktioniert. Bevor mir nun der Schädel platzt, kann mich bitte jemand an die Hand nehmen und es mir erklären?

Ich habe vier Tabellen die wie folgt aussehen:
Schema

Und nun das query:
Code:
SELECT 
	submissions.submission_name, 
	AVG(ratings.rating) AS AVG_rating, 
	COUNT(ratings.ratings_id) AS COUNT_ratings,
	users.username,
	COUNT(favourites.favourite_id) AS COUNT_favourites
FROM submissions 
	LEFT JOIN ratings ON (submissions.submission_id = ratings.submission_id)
	LEFT JOIN users ON (submissions.user_id = users.user_id )
	LEFT JOIN favourites ON (submissions.submission_id = favourites.submission_id)
WHERE users.active = 1 AND submissions.active = 1
GROUP BY submissions.submission_id,  ratings.submission_id,  favourites.submission_id
ORDER BY AVG_rating DESC, submissions.date DESC
LIMIT 0,6


Die Ergebnisse (mit dazugehörigem Explain) wie folgt:
Result

Da sollte aber bei "COUNT_ratings" und "COUNT_favourites" folgendes stehen:
Code:
submisison_name		COUNT_ratings	COUNT_favourites
Hunter Killer		295		40
DON'T DO IT!		256		29
Corals			362		19
Moh's ball		184		10
little "Who"		234		14
My Treasure !		125		8

Wenn ich nun das "COUNT(favourites.favourite_id)..." und den "LEFT JOIN favourites..." weglasse bekomme ich die richtigen Ergebnisse. Ich will nicht wissen welches Ergebniss ich bekomme, wenn in einer der Tabellen (z.B. favourites) nichts drin steht - müsste doch "0" rauskommen aber doch nicht 11tausendungrad

Was zum Henker mach ich falsch? Bitte, kann jemand helfen - bin am Verzweifeln.

Liebe Grüsse
Michael
 
Zurück