Zum Inhalt springen

Hilfe bei sortierter Abfrage


TwoBe

Empfohlene Beiträge

Ich hab eine Datenbank mit den spalten userid, timestamp, punkte und in diese Datenbank wird jetzt in unregelmässigen Abständen ein neue Zeile mit Informationen über den Punktestand eines jeweiligen users, identifiziert anhand seiner id zum aktuellen zeitpunkt eingetragen. Jetzt will ich quasi eine Art Highscore ausgeben und hab keine Ahnung wie ich da ansetzen soll... Ich hoffe ich finde hier Hilfe ;)

Danke...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich verwende eine MySQL Datenbank wo ich mit PHP drauf zugreife...

Ich brauche im Prinzip eine Tabelle als Ausgabe die in der einen Spalte die Userid und in der anderen Spalte die Punkte stehen, allerdings sortiert nach Punkte absteigend... Die Punkte zur jeweiligen Userid sind immer die des letzten Timestamps!

Ums mal "einfacher" auszudrücken:

Gib mir alle userids und punkte, sortiert nach timestamp bzw. Punkte, allerdings keine userid doppelt...

Is irgendwie schwierig zu erklären, aber hoffe das is verständlich :)

Nur die ersten 10 könnte ich ja dann über ein Limit lösen...

Danke schonmal für Antworten ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für deine Mühe, aber leider bringt das irgendwie nicht das richtige ergebniss... Ich geb mal ein Beispiel an:

tabelle usperpoints mit columns userid, timestamp, punkte

zeile 1: 1234, 1.1.09, 100

zeile 2: 4321, 2.1.09, 120

zeile 3: 3214, 3.1.09, 150

zeile 4: 1234, 4.1.09, 180

zeile 5: 4321, 3.1.09, 80

sollte als ausgabe folgendes haben:

zeile 4

zeile 3

zeile 5

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für deine Mühe, aber leider bringt das irgendwie nicht das richtige ergebniss... Ich geb mal ein Beispiel an:

tabelle usperpoints mit columns userid, timestamp, punkte

zeile 1: 1234, 1.1.09, 100

zeile 2: 4321, 2.1.09, 120

zeile 3: 3214, 3.1.09, 150

zeile 4: 1234, 4.1.09, 180

zeile 5: 4321, 3.1.09, 80

sollte als ausgabe folgendes haben:

zeile 4

zeile 3

zeile 5

achja aender ma

ORDER BY

t1.timestamp

in

ORDER BY

t1.punkte

um :D

edith: evtl musst du noch die richtung mit angeben, aber ich verwechsel immer ASC und DESC von daher hab ichs einfach weggelassen :>

Ted

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die Frage ist nun, kann es an einem Tag mehrere Sätze eines Spielers geben?

Wenn ja, dann wäre die Anforderung, dass keine doppelte Spielersätze ausgegeben werden sollen, mit Teds Statement nicht erfüllt. Und das weil der Timestamp ohne Uhrzeit gespeichert wird.

In dem Fall müsste man noch zusätzlich nach der höchsten Tagespunktzahl suchen und zwar gruppiert nach Spieler Id und Datum.

Im Subselect muss in dem fall eigentlich keine group by Klausel sein.

Hier mal mein Vorschlag (da kein mysql zur Verfügung ungetestet)

SELECT  ups.userid

       ,ups.TIMESTAMP

       ,MAX(ups.punkte)

  FROM  userpoints ups 

 WHERE  ups.TIMESTAMP = (SELECT  MAX(ups2.TIMESTAMP)

                           FROM  userpoints ups2

                          WHERE  ups.userid = ups2.userid) 

GROUP BY ups.userid

        ,ups.TIMESTAMP

ORDER BY MAX(ups.punkte) desc

Edit: Das ist aber keine wirkliche Highscoretabelle sondern eine "Lastscore"-Tabelle. ;-)

Bearbeitet von dimikar
Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn ja, dann wäre die Anforderung, dass keine doppelte Spielersätze ausgegeben werden sollen, mit Teds Statement nicht erfüllt. Und das weil der Timestamp ohne Uhrzeit gespeichert wird.

Oha gar nich drauf geachtet... denn er hat geschrieben "timestamp" und timestamp = sekunden seit 1.1.1970

Zeitstempel ? Wikipedia

aber gut das es noch leute gibt die aufpassen ;)

Ted

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hehe ja das mit dem Timestamp hatte ich auch am Anfang gedacht

aber dann wurden die Satzbeispiele gepostet. Du kannst nichts dafür Ted.

Wobei wir es immer noch nicht wissen ob es mehrere Sätze pro Spieler und pro Datum geben kann. Wenn nicht dann tut es deine Abfrage auch. ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...