Problem mit JOIN
Jo
- datenbank
Hallo zusammen!
Ich hab ein kleines Tippspiel für aktuelle Zweitliga-Saison gemacht.
In der Datenbank hab ich folgende Tabellen:
user
Die Daten der Mitspieler
spielplan
Spieltag und Datum der Spiel
tipps
user-ID, spiel-ID und der Tipp
Ich bräuchte jetzt die Anzahl der Tipps, die jeder User für eine bestimmten Spieltag abgegeben hat.
Die Abfrage
SELECT u.name, count(*) FROM user u
JOIN tipps t ON b.id = t.user
JOIN spielplan s ON t.spiel = s.id
WHERE s.tag =3
GROUP BY u.id
liefert mir fast das gewünschte Ergebnis. Allerdings werden nur die User aufgeführt, die mindestens einen Tipp für den gewünschten Spieltag abgegeben haben. Ich hätte aber gerne alle User, also auch die, die für den betreffenden Spieltag noch nicht getippt haben.
Ich geh mal davon aus, dass das in einer Abfrage geht und ich nur mal wieder auf dem Schlauch steh...
Vielen Dank schon mal und viele Grüße
Jo
hi,
Allerdings werden nur die User aufgeführt, die mindestens einen Tipp für den gewünschten Spieltag abgegeben haben. Ich hätte aber gerne alle User, also auch die, die für den betreffenden Spieltag noch nicht getippt haben.
http://aktuell.de.selfhtml.org/artikel/datenbanken/joins/index.htm#leftright_join sollte weiterhelfen.
gruß,
wahsaga
yo
http://aktuell.de.selfhtml.org/artikel/datenbanken/joins/index.htm#leftright_join sollte weiterhelfen.
ein paar tips die er noch dabei beachten sollte wären hilfreich. zum einen istr die abfrage nicht ganz korrekt, was gie gruppierung betrifft, auch wenn keine fehlermeldung kommt. deswegen gehe ich mal davon aus, das du mysql benutzt. die lsöung ist einfach, gruppiere zusätzlich zur id, auch über den namen.
zum anderen musst du OUTER JOINS einsetzen und dann bei der Aggregat-funktion Count() aufpassen, dass du nicht das * zum zählen nimmst, sondern eine spalte aus der tabelle mit dem tipps. sonst würde ja immer mindestens 1 herauskomen, auch wenn es gar keni tipp gab, da aber dann immer mindestens ein datensatz für jeden spieler vorhande ist.
Ilja
Hi wahsaga! Hi Ilja! Hi Ihr anderen!
Sorry, dass ich mich jetzt erst melde. Bin das Wochenende nicht an den Rechner gekommen.
Aber danke! Funktioniert jetzt alles so, wie ich es gerne hätte und den JOIN hab ich glaub ich auch so langsam verstanden.
Danke nochmal und viele Grüße
Jo