Servus zusammen, ich bin neu hier und kann etwas SQL. Die Beträge hier und das Forums ingesamt gefallen mir sehr gut.
Ich habe ein Problem und bin gespannt, ob mir die Forumsgemeinde helfen kann.
Ich speichere in einer DB Spielstände von mehreren Spielern, die mehrere verschiedene Spiele spielen können. Das rel. DB-Modell ist im Bild zu sehen.
Nun möchte ich von allen Spielen nur (!) die drei besten Spieler angezeigt bekommen. Daran scheitere ich leider. Kann mir jemand helfen?
Meine bisherigen Ansätze bringen ALLE Spieler je Spiel (nicht nur die drei besten je Spiel):
a)
SELECT g.name, p.nickname, erg.punkte
FROM tblSpiel AS g, tblSpieler AS p, tblSpielerSpiel AS erg
WHERE g.id = erg.idSpiel AND p.id = erg.idSpieler
ORDER BY UPPER(g.name) ASC, punkte DESC
b)
SELECT g.name, s.nickname, erg.punkte
FROM tblSpiel AS g
JOIN tblSpielerSpiel AS erg ON g.id = erg.idSpiel
JOIN tblSpieler AS s ON s.id = erg.idSpieler
ORDER BY UPPER(g.name) ASC, erg.punkte DESC
Ich habe ein Problem und bin gespannt, ob mir die Forumsgemeinde helfen kann.
Ich speichere in einer DB Spielstände von mehreren Spielern, die mehrere verschiedene Spiele spielen können. Das rel. DB-Modell ist im Bild zu sehen.
Nun möchte ich von allen Spielen nur (!) die drei besten Spieler angezeigt bekommen. Daran scheitere ich leider. Kann mir jemand helfen?
Meine bisherigen Ansätze bringen ALLE Spieler je Spiel (nicht nur die drei besten je Spiel):
a)
SELECT g.name, p.nickname, erg.punkte
FROM tblSpiel AS g, tblSpieler AS p, tblSpielerSpiel AS erg
WHERE g.id = erg.idSpiel AND p.id = erg.idSpieler
ORDER BY UPPER(g.name) ASC, punkte DESC
b)
SELECT g.name, s.nickname, erg.punkte
FROM tblSpiel AS g
JOIN tblSpielerSpiel AS erg ON g.id = erg.idSpiel
JOIN tblSpieler AS s ON s.id = erg.idSpieler
ORDER BY UPPER(g.name) ASC, erg.punkte DESC