mySQL - besondere Sortierung

Fragen zu allen anderen Programmiersprachen.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

Beispiel:

Code: Alles auswählen

A   100
B   65
C   65
D   3
E   29
Ein SELECT Punkte FROM Table WHERE Name = "C"
liefert mir dann 65

Ein SELECT count(*) FROM Table WHERE Punkte > 65
liefert mir 1, also ist C auf dem 2.
genauso wie B weil sie gleich viele Punkte habe


Ein SELECT Punkte FROM Table WHERE Name = "E"
liefert mir dann 29

Ein SELECT count(*) FROM Table WHERE Punkte > 29
liefert mir 3, also ist E auf dem 4.

Es wäre auch richtig:
es gibt dann keinen 3. Platz, weil zwei leute sich den 2. Teilen ...
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
Benutzeravatar
gnasen
Beiträge: 578
Registriert: 01.08.2007 14:28
Computerausstattung: PB 4.60

Beitrag von gnasen »

Jupp, das Problem löst sich durch die Abfrage nach höheren Werten selbst.
Gibt genau den passenden gesamt Rang zurück, wenn sich mehrere Leute die Plätze teilen.

Das ganze ist übrigens keine php Abfrage, sondern aus meinem PB Programm raus. Ich fand nur, dass der Querry (um den es ging) besser unter "andere Sprachen" im Forum passt.
pb 4.51
Benutzeravatar
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:

Beitrag von KeyKon »

Gibt es eigentlich auch eine Möglichkeit bei Count(*) einen zweiten, untergeordneten Sortierparameter zu benutzen (zum Beispiel die Zeit an dem der Highscore erstellt wurde, so dass bei gleicher Punktzahl der oben ist der den Highscore früher hatte)?
(\/) (°,,,°) (\/)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

klar, wäre dann aber hinten bei WHERE:

Etwas abgeändert:

Code: Alles auswählen

SELECT count(*) FROM Table WHERE Punkte > MeinePunkte OR (Punkte = MeinePunkte AND Zeit < MeineZeit)
Dann würde er erst mal weiter alles zählen was besser ist, und bei gleichstand würde er dem "zuerst erreichtem" den besseren Platz geben
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
Antworten