Seite 2 von 2

Verfasst: 20.01.2009 00:14
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 ...

Verfasst: 20.01.2009 10:18
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.

Verfasst: 20.01.2009 14:37
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)?

Verfasst: 20.01.2009 18:05
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