Pokaż mi strukturę swojej tabeli w bazie danych (kolumny, indeksy), bo mogę tylko zgadywać co Ty tam masz i czego nie masz.
2ga sprawa: używasz tego zapytania w PHP, czy w pluginie na serwerze? Jeśli w pluginie na serwerze, podaj mi DOKŁADNĄ treść zapytania skopiowaną bezpośrednio z pluginu, bo nie wiem w którym miejscu określasz jakiego gracza dane powinny być pobrane z serwera.
//edit
Tamto zapytanie pisałem po pijaku i trochę zmęczony, w 2ch miejscach się pomyliłem. Tu masz na 100% działające. Jeśli chcesz wyświetlić ranking konkretnego gracza, dodaj WHERE l.nick='nick gracza' przed GROUP BY Możesz wtedy pominąć ORDER BY. Jeśli chcesz wyświetlić określoną ilość miejsc w rankingu (zaczynając od dowolnego) dopisz na końcu LIMIT ilość OFFSET zaczynając_od. OFFSET możesz oczywiście pominąć.
SELECT
l.nick AS `nick`,
l.`exp` AS `exp`,
COUNT('1')+1 AS `rank`
FROM nazwa_tabeli AS l
LEFT JOIN nazwa_tabeli AS r
ON l.`exp`<r.`exp`
GROUP BY l.nick
ORDER BY exp DESC
Zapytanie w polu rank wpisze ranking każdego gracza, dodatkowo gdy 2 osoby będą miały tą samą ilość rankingu, będą obie na miejscu np 5tym, a osoba tuż za nimi będzie na 7mym (tak, jak w normalnym systemie rankingowym powinno być).
Możesz to sobie w jednej linii też dać spokojnie
Użytkownik GwynBleidD edytował ten post 12.07.2013 19:26