SET @MyRowNum :=0; SELECT punkty, @MyRowNum := @MyRowNum +1 AS miejsce, nick FROM users ORDER BY punkty DESC;
Otóż problem w tym, że chciałbym podając tylko nick, pokazać miejsce które zajął by ten użytkownik na tle innych. Dodałem
WHERE nick='admin'
wpisałem tak:
SET @MyRowNum :=0; SELECT punkty, @MyRowNum := @MyRowNum +1 AS miejsce, nick FROM users WHERE nick='admin' ORDER BY punkty DESC;
Wyświetla się tylko admin, ale nie ważne czy będzie mieć nawet 0 punktów, zawsze zajmie 1 miejsce.
Robię coś takiego pod stronkę, żeby po zalogowaniu widzieć na którym jestem miejscu w rankingu.
Tutaj ktoś miał identyczny problem: http://www.experts-exchange.com/Database/M...Q_21039662.html ale żeby zobaczyć odpowiedzi trzeba mieć wykupione konto.
Jakieś pomysły ? Tylko mnie nie odsyłajcie do google bo szukałem długo, a nie mam zbyt wiele czasu bo pisze z kompa od kolegi:/
EDIT:
Znalazłem takie rozwiązanie, niby wszystko działa..
$q = "SELECT punkty, nick from users ORDER BY punkty DESC;"; $dane = mysql_query($q); echo "Miejsce Nick Punkty<br>"; $miejsce = "0"; while( $row = mysql_fetch_array( $dane ) ) { $miejsce = ($miejsce+1); IF($row[nick]=="admin"){ echo "<br>"; echo "$miejsce $row[nick] $row[punkty]"; exit(); } }
Tylko pozostaje mi jedno pytanie, jak długo będzie to przetwarzał serwer jeśli w bazie danych będzie jakieś 5000 rekordów ?