Ilja: [MySQL] Bitte mal Konzept anschauen

Beitrag lesen

yo,

Dann können wir ja jetzt zu den SQL-Anweisungen übergehen :).

game: id, name, ...
round: id, round, placing, game_id, player_id
player: id, name, ...

so würden dann in etwa die drei tabellen aussehen. darauf nun die abfrage der bestenliste, wobei ich deinen punkteverteilungsschlüssel nicht kenne:

SELECT Platz, -- einfach nur stumpf von 1 bis n hochzählen
       p.name AS Spieler,
      (hier_unterabfrage_mit_verteilungsschluessel) AS Punkte,
       (SELECT COUNT(DISTINCT r2.game_id) FROM round r2 WHERE p1.id = r2.player_id) AS Spieleanzahl ,
       (hier_wieder eine_unterabfragen_,it_den_punkten / anzahl_runden),
       (SELECT COUNT(*) FROM round r3 WHERE p1.id = r3.player_id) AS Rundenanzahl,
       (hier_noch_eine_unterabfrage_mit_punkte_runden) AS Punkte/Runde
FROM player p
LEFT JOIN round r ON p.id = r.player_id
LEFT JOIN game g ON g.id = r.game_id
ORDER BY Punkte DESC

die LEFT JOINS sind notwendig, damit auch Spieler aufgenommen werden, die noch an keinen spiel teilgenommen haben, aber trotzdem gelistet werden.

btw. unterabfragen geher erst ab 4.1+ bei mysql.

Ilja