Hallo zusammen,
ich möchte zu einem Spieler alle Saisons namentlich auflisten, der der Spieler zugeordnet ist (Tabelle saison_spieler). Zusätzlichen sollen die an den einzelnen Spieltagen der jeweiligen Saison gesamt gespielten Minuten, Tore etc. angezeigt werden. Hört sich eigentlich banal an, aber ich hänge irgendwie...
Ich habs auf diesem Weg, per Subselect, versucht:
SELECT
saison_spieler.saison_id AS saison_id,
saison.name AS saison_name,
saison.jahr AS saison_jahr,
stat.spielzeit
FROM
`saison_spieler`
JOIN
`saison`
ON(saison.id = saison_spieler.saison_id)
JOIN
(SELECT
spieltag.saison_id AS saison_id_,
SUM(spielerstatistik.spielzeit) AS spielzeit
FROM
spielerstatistik
JOIN
spieltag
ON(spieltag.id = spielerstatistik.spieltag_id)
WHERE
spielerstatistik.spieler_id = 12
) AS stat
ON(stat.saison_id_ = saison_id)
WHERE
saison_spieler.spieler_id = 12
GROUP BY
saison_id
Das Ergebnis:
Mein Problem ist die Spalte 14. Das SUM() sorgt dafür, dass das Ergebnis aus dem Haupt-SELECT auf nur eine Ergebnis-Zeile eingedampft wird. Die Summe 36517 sind die gespielten Minuten aus allen Saisons. Entferne ich das SUM() aus dem Subselect, bekomme ich dies als Ergebnis:
Jetzt werden die Saisons korrekt aufgelistet, aber die gespielten Minuten sind nur die des ersten Spiels, das der Spieler in der jeweiligen Saison absolviert hat. Das ist ja insofern richtig, als dass keine Gesamtsumme gebildet wird und im Haupt-SELECT nur "Platz" für ein Ergebnis aus dem Subselect ist.
Aber wie erhalte ich denn nun die korrekte Summe aus dem Subselect? Ich habe es auf verschiedenen Wegen versucht. Die jetzt alle aufzuzählen, würde den Rahmen sprengen. Der obige Ansatz scheint mir doch der Vielversprechendste zu sein. Vielleicht hat ja jemand einen Denkanstoß, der mich weiterbringt.
Schöne Grüße und vielen Dank schonmal an alle, die sich die Mühe machen, sich da reinzudenken, das finde ich bei DB-Problemen immer besonderns mühsam.
Nico