JOIN & Group-Element

JOIN & Group-Element

am 06.03.2007 09:47:55 von Sascha Clausen

Liebe MySQL-Gruppe,

ich habe ein Problem mit einem MySQL-Syntax.

Folgende Tabellen zur Veranschaulichung:

Tabelle Marmeladensorte
ID,BenutzerID,Name

Tabelle Benutzer
ID,Name

Tabelle Bewertung
ID,MarmeladenID,Wertung

Jetzt möchte in einem SQL-Statement alle Marmeladensorten haben und statt
der Benutzer ID dazu gleichzeitig den Benutzernamen (aus der Tabelle
Benutzer) als auch die Bewertung für die Marmelade.

Dabei sind 3 Sachen zu beachten:
a) Es muss keine BenutzerID in Marmeladensorte vorhanden sein
b) Es müssen keine Bewertungen für eine Marmeladensorte vorliegen
c) In der Tabelle Bewertung kann es pro Marmeladensorte nicht nur einen
Eintrag, sondern unendlich viele Einträge ergeben. Ich möchte die
Durchschnittsbewertung haben, welche sich aus SUM(Wertung)/COUNT(ID)
errechnet.

Ich habe alles über 2 LEFT-Joins und einem Group BY gelöst. Schien auch zu
funktionieren. Das Problem: Wenn keine Bewertung für eine Marmelade
vorliegt wird diese nicht mitselektiert. :-(

Wer kann helfen?

Vielen Dank bereits!

Re: JOIN & Group-Element

am 06.03.2007 10:16:06 von Claus Reibenstein

Sascha Clausen schrieb:

> Ich habe alles über 2 LEFT-Joins und einem Group BY gelöst. Schien auch zu
> funktionieren. Das Problem: Wenn keine Bewertung für eine Marmelade
> vorliegt wird diese nicht mitselektiert. :-(

Dann stimmen Deine LEFT-JOINs wahrscheinlich nicht.

Wie sieht die Abfrage denn aus, welches Ergebnis bekommst Du, und
welches Ergebnis möchtest Du haben?

Gruß. Claus
--
,~°O O
O ,´ / |/|\
/ |¯`. Das neue Hochzeits-Branchenbuch im Internet ,´ / | |\
/__| `~...............................................~´ /___|/ /

Re: JOIN & Group-Element

am 06.03.2007 10:30:59 von Johannes Vogel

Hi Sascha

Sascha Clausen wrote:
> Ich habe alles über 2 LEFT-Joins und einem Group BY gelöst. Schien auch zu
> funktionieren. Das Problem: Wenn keine Bewertung für eine Marmelade
> vorliegt wird diese nicht mitselektiert. :-(

Schau mal mit Explain, in welcher Reihenfolge MySQL joined. Setze u.U.
Klammern, so dass der LEFT JOIN stimmt.

HTH, Johannes