mySQL - besondere Sortierung
mySQL - besondere Sortierung
Hi,
für mein derzeitiges Projekt nutze ich eine mySQL Datenbank, auf der bestimmte Daten zu bestimmten Usern hinterlegt werden. In diesem Fall eine Highscore.
Das Problem ist folgendes, ich habe eine DB, in der folgendes liegen soll:
UserID, (für diesen Thread unwichtiges Zeug), Punkte, Rang
UserID und Punkte sind befüllt. Der Rang soll sich aus den Punkten ergeben, also wer die meisten Punkte hat, soll hier die 1 bekommen, der mit den zweitmeisten die 2 usw.
Die Frage ist, wie bekomme ich das hin, wie würde der Querry lauten um die Rang spalte zu füllen?
Oder gibt es vllt noch einen performanteren Weg?
Meine Kenntnisse in mySQL beschränken sich auf die absolute Basis, daher hielft mir jeder Tipp!
Danke schonmal,
gnasen
für mein derzeitiges Projekt nutze ich eine mySQL Datenbank, auf der bestimmte Daten zu bestimmten Usern hinterlegt werden. In diesem Fall eine Highscore.
Das Problem ist folgendes, ich habe eine DB, in der folgendes liegen soll:
UserID, (für diesen Thread unwichtiges Zeug), Punkte, Rang
UserID und Punkte sind befüllt. Der Rang soll sich aus den Punkten ergeben, also wer die meisten Punkte hat, soll hier die 1 bekommen, der mit den zweitmeisten die 2 usw.
Die Frage ist, wie bekomme ich das hin, wie würde der Querry lauten um die Rang spalte zu füllen?
Oder gibt es vllt noch einen performanteren Weg?
Meine Kenntnisse in mySQL beschränken sich auf die absolute Basis, daher hielft mir jeder Tipp!
Danke schonmal,
gnasen
pb 4.51
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
richtig.
Einfach das aufrufen:
"SELECT * FROM ... ORDER BY Punkte"
und dann sind die "Sortiert" den Rang kannst du ja dann selber mit php oder so an hand des Datensatz dazu machen ...
Einfach das aufrufen:
"SELECT * FROM ... ORDER BY Punkte"
und dann sind die "Sortiert" den Rang kannst du ja dann selber mit php oder so an hand des Datensatz dazu machen ...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- KeyKon
- Beiträge: 1412
- Registriert: 10.09.2004 20:51
- Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit) - Wohnort: Ansbach
- Kontaktdaten:
Mitzählen 
Wenn du zum Beispiel von Platz 30 bis 40 auslesen willst machste das ungefähr so:
Und zählst dann beim ausgeben einfach von 30 aufwärts mit...

Wenn du zum Beispiel von Platz 30 bis 40 auslesen willst machste das ungefähr so:
Code: Alles auswählen
SELECT * FROM ... ORDER BY 'score' DESC LIMIT 30,10
(\/) (°,,,°) (\/)
mit Count:
meine Punkte ermitteln:
SELECT Punkte FROM ... WHERE Name = "blabla"
Meinen Rang ermitteln
SELECT Count(*) FROM ... WHERE Punkte > MeinePunkte
wenn also 2 besser sind kommt als Ergebnis 2 also bist du dann 3.
meine Punkte ermitteln:
SELECT Punkte FROM ... WHERE Name = "blabla"
Meinen Rang ermitteln
SELECT Count(*) FROM ... WHERE Punkte > MeinePunkte
wenn also 2 besser sind kommt als Ergebnis 2 also bist du dann 3.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Mal ne andere Frage dazu.
Was ist, wenn nun zwei User die gleiche Punktzahl haben??
Dann hast doch den Schlamassel, dass du dort dann auch noch ne extra Abfrage starten musst.
Ich hoffe, du machst die Abfrage mit PHP und weisst auch, was du machen musst.
Denn wenn du nun 3 Leute hast, die die gleiche Punktzahl hast, wären die ja eigentlich auf dem gleichen Rang.
Und soll der nächste dann z. B. auf Rang 4 oder soll der dann auf Rang 2?
Denn wenn die der 4. in der Runde nun auf Rang 2 ist, müsstest du noch ein GROUP BY mit einbringen oder halt die Auflistung per PHP so generieren.
Naja, es sei denn, ich verzäle mich gerade irgendwie.
Was ist, wenn nun zwei User die gleiche Punktzahl haben??
Dann hast doch den Schlamassel, dass du dort dann auch noch ne extra Abfrage starten musst.
Ich hoffe, du machst die Abfrage mit PHP und weisst auch, was du machen musst.
Denn wenn du nun 3 Leute hast, die die gleiche Punktzahl hast, wären die ja eigentlich auf dem gleichen Rang.
Und soll der nächste dann z. B. auf Rang 4 oder soll der dann auf Rang 2?
Denn wenn die der 4. in der Runde nun auf Rang 2 ist, müsstest du noch ein GROUP BY mit einbringen oder halt die Auflistung per PHP so generieren.
Naja, es sei denn, ich verzäle mich gerade irgendwie.
Mit freundlichen Grüßen,
chrizl
chrizl