Liebe Fußball-Freunde,
ich bin derzeit aus gegebenem Anlass dabei, ein kleines EM-Tippspiel unter Freunden zu entwickeln. Die Daten dazu werden in einer MySQL-Datenbank gespeichert.
Die Tabellenstrukturen sind wie folgt (etwas vereinfacht und aufs wesentliche reduziert):
Code:
tippspiel_begegnungen(id, datum, team1_id, team2_id)
tippspiel_benutzer(id, name, email)
tippspiel_tipps(id, begegnung_id, benutzer_id, team1_tore, team2_tore)
tippspiel_ergebnisse(begegnung_id, team1_tore, team2_tore)
tippspiel_tipps(id, begegnung_id, benutzer_id, team1_tore, team2_tore)
tippspiel_mannschaften(id, name, kuerzel)
Das funktioniert auch soweit alles ganz gut, mein Vorhaben ist es nun eine Tabelle zu erstellen, in der alle Benutzer gegen alle bisher vergangenen Begegnungen aufgetragen sind, und deren Zellen die entsprechende Punktzahl für das getippte Ergebnis enthalten.
Daher mein Ansatz:
Code:
SELECT
tippspiel_benutzer.name AS benutzer,
tippspiel_tipps.id AS tipp_id,
tippspiel_begegnungen.id AS begegnung_id
FROM
tippspiel_benutzer
JOIN
tippspiel_tipps
ON
tippspiel_tipps.benutzer_id = tippspiel_benutzer.id
JOIN
tippspiel_begegnungen
ON
tippspiel_begegnungen.id = tippspiel_tipps.begegnung_id
ORDER BY
tippspiel_benutzer.id
Mit dieser Abfrage enthält das Ergebnis alle abgegebenen Tipps mit der zugehörigen Begegnung und dem Benutzer. Das Ziel ist jedoch eine Tabelle, die alle Begegnungen mit jedem Benutzer enthält und der Tipp ggf. (wenn nicht vorhanden) null ist.
Ich habe schon so ziemlich jede JOIN-Variante ausprobiert, bekomme jedoch nie das gewünschte Ergebnis. Der Haken liegt wohl darin, dass es keine direkte Referenz zwischen einer Begegnung und einem Benutzer gibt, sondern die Verknüpfung über den entsprechenden Datensatz in der Tabelle tippspiel_tipps erzeugt wird.
Ich hoffe ihr könnt mein Problem nachvollziehen und danke im Vorraus schonmal für eure Antworten.
Auf einen schönen und hoffentlich torreichen Sonntagabend!