Position in Rangliste feststellen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Position in Rangliste feststellen

    Hi,

    ich habe folgendes Problem. Ich habe eine Datenbank, in der die HighScores von verschiedenen Spielen angezeigt werden. Da ein Spieler an mehreren Spielen teilnehmen kann, taucht er auch mehrfach in der Tabelle auf. Das ist soweit kein Problem da ich ihn mit GROUP zusammenfasse.

    SELECT * from scores GROUP BY user ORDER BY score desc, date asc

    Okay, nun habe ich also alle Spieler in der richtigen Reihenfolge.

    Doch wie gehe ich es nun an, wenn ein Spieler eingeloggt ist und er seine aktuelle Position in dieser Tabelle angezeigt haben möchte (z.B. Du bist im Moment auf Platz 967).

    Bin für jede Idee dankbar!

  • #2
    SELECT user, sum(score) as Summe from scores order by Summe desc date asc
    und dann durchzählen, bis du den gesuchten Usernamen hast.

    Alternativ kannst du alle Ergebnisse dieser Query in einer Zwischentabelle speichern; dann kannst du dir die Schleife sparen:

    Definition der Tabelle: CREATE TABLE rangliste ( rang BIGINT UNSIGNED auto_increment, user VARCHAR(30), summe INT UNSIGNED, PRIMARY KEY rang, KEY user)

    Rang suchen:
    DELETE FROM rangliste;
    INSERT INTO rangliste (user, summe) SELECT user, sum(score) as Summe from scores order by Summe desc, date asc;
    SELECT ID FROM rangliste where user='$user'

    Übrigens habe ich mal nach Datum aufsteigend sortiert - denn wer die gleiche Punktzahl früher hat, ist doch besser als der andere, oder?
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      Vielen Dank!!! Hat geklappt!

      Kommentar

      Lädt...
      X