Hello,
Ich möchte nun für Spiele-ID 5 eine Liste der Teilnehmenden Spieler ausgeben, die beim letzten stattgefundenen Termin anwesend waren. Das Datum kenne ich aber nicht, sonst wärs ja einfach.
gut, also finden wir doch erstmal die ID vom letzten Spieltag raus. Hmh, da fängt das Problem an, dein Varchar-Datentyp ist denkbar ungünstig. Wäre es eine Datumsspalte, wäre die einfach Anfrage:
SELECT DISTINCT ID FROM tab WHERE datum = (SELECT MAX(datum) FROM tab)
Nunja, du kannst versuchen dein Datum in ein Datum zu konvertieren:
SELECT DISTINCT ID FROM tab WHERE datum = (SELECT MAX((DATE(datum)) FROM tab)
obs klappt hängt vom genauen Inhalt ab.
Mit der genauen Information kann es jetzt dann losgehen, wir fragen die Spieler ab, die an einem der gefundenen Spiele teilgenommen haben:
SELECT name
FROM tab t1
WHERE id = (SELECT DISTINCT ID FROM tab WHERE datum = (SELECT MAX((DATE(datum)) FROM tab))
Ganz grundsätzlich ist da ne Menge Optimierungspotenzial - zum einen die Sache mit dem Varchar, zum zweiten macht es wahrscheinlich wenig Sinn das Datum UND die Spiele-ID redundant zu führen - überlege dir, ob nicht folgendes eine sinnvollere Struktur ist:
Tabelle spiele: Datum|Spiele-ID
Tabelle teilnahme: Spiele-ID|Name
Ich bin auch nicht sicher, ob man nach varchar-typ-spalten gruppieren kann.
kann man, aber das hilft dir wie weiter?
MfG
Rouven
-------------------
sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
Ambition is the last refuge of failure. -- Oscar Wilde (Irish Poet, Novelist, Dramatist and Critic, 1854-1900)