• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pobieranie numeru wiersza z bazy MySQL

Object Storage Arubacloud
0 głosów
742 wizyt
pytanie zadane 3 grudnia 2016 w SQL, bazy danych przez DaltooN Początkujący (430 p.)
Witam.

Próbuję zrobić ranking graczy dla mojej gry mobilnej. Pracuję w PHP i MySQL. Chciałbym zrobić ranking, który wyświetla pozycję gracza, a nie całą tabelę, a następnie pokazuje aktualną pozycję w rankingu. Do tego celu użyłem zapytania SELECT `nazwagracza`, `wynik` FROM `rankinggraczy` ORDER BY wynik DESC

Wyświetla mi się lista wyników graczy malejąco.

Janek 5

Franek 4

Jacek 2

Michał 0

I tutaj jest mój problem. Jak mam sprawdzić, które miejsce w tej tabeli ma gracz Jacek. Jak sprawdzić numer tego wiersza. Mam nadzieję że wytłumaczyłem to w miarę zrozumiale.
komentarz 3 grudnia 2016 przez efiku Szeryf (75,160 p.)

Jeżeli baza jest poprawnie zrobiona to.. powinieneś mieć ID pod którym siedzi "Janek"

user_id user_points
1 600
2 433
5 33

user_id  <=> user.id =  user.name 

Bo jeśli użytkownik zostanie usunięty, to przecież nie może zostać w rankingu.

 

komentarz 3 grudnia 2016 przez C-Bart Nowicjusz (160 p.)
Ale raczej gracz o niższym id niekoniecznie musi mieć więcej punktów. Kolejni gracze będą dopisywani pewnie dalej a wyniki mogą mieć różne, id nie będzie odzwierciedlać pozycji w rankingu.
komentarz 3 grudnia 2016 przez efiku Szeryf (75,160 p.)

id nie będzie odzwierciedlać pozycji w rankingu.

Nigdzie nie napisałem, że ma odzwierciedlać pozycję w rankingu :) 

Wystarczy pomyśleć.

komentarz 3 grudnia 2016 przez C-Bart Nowicjusz (160 p.)

Chyba nie umiem myśleć :) Naprawdę nie widzę związku między id a wynikiem. Zastanawiam się jak w takiej sytuacji jak niżej wykorzystując id wiedzieć, że gracz o id = 2 ma najlepszy wynik.

id

wynik
1 35
2 415
3 103

3 odpowiedzi

+1 głos
odpowiedź 3 grudnia 2016 przez C-Bart Nowicjusz (160 p.)
Na szybko przychodzi mi do głowy, że można zliczyć po prostu rekordy, dla których wynik > wynik_gracza_ktorego_miejsce_chcemy_znac

 

Przykładowo dla Janka:

SELECT count(*) AS `pozycja`
FROM rankinggraczy
WHERE wynik > (SELECT wynik FROM rankinggraczy WHERE nazwagracza = 'Janek')

 

Do zwróconego wyniku oczywiście trzeba dodać 1 aby uwzględnić jeszcze szukanego gracza.
komentarz 3 grudnia 2016 przez DaltooN Początkujący (430 p.)
Jutro spróbuję wykorzystać tę metodę i dam znać, czy działa tak jak tego oczekiwałem :)
komentarz 4 grudnia 2016 przez DaltooN Początkujący (430 p.)

DZIAŁA JAK NALEŻY DZIĘKUJE!

0 głosów
odpowiedź 3 grudnia 2016 przez Sebastian Westfal Obywatel (1,020 p.)
Jeżeli wyświetlasz to w pętli to dodaj sobie zmienną pomocniczą, która równa się 1 i po każdym przejściu pętli dodaj do niej 1
komentarz 3 grudnia 2016 przez DaltooN Początkujący (430 p.)
Nie wyświetlam tego w pętli, po prostu dodaję zapytanie SELECT `nazwagracza`, `wynik` FROM `rankinggraczy` ORDER BY wynik DESC, a tabelę mam tylko w phpmyadmin. Gdybym stosował pętle do wyświetlania wyników, to przy większej ilości użytkowników trwało by to zbyt długo. Dlatego jestem ciekaw czy jest jakiś inny szybki sposób na pobranie pozycji gracza, czy też może odpowiednie zapytanie które pobiera numer wiersza.
komentarz 3 grudnia 2016 przez Boshi VIP (100,240 p.)
Przecież i tak pobierasz wszystkich użytkowników..  czas wyświetlania ogranicza się do paginacji.

Dalej nie rozumiem o co ci z tą pozycją chodzi.
komentarz 3 grudnia 2016 przez DaltooN Początkujący (430 p.)
Dobrze to inaczej.

Chcę z pośród pobranych rekordów, sprawdzić który rekord zawiera userid="Janek"
komentarz 3 grudnia 2016 przez Boshi VIP (100,240 p.)
użyj warunku lecąc po rekordach.
–1 głos
odpowiedź 3 grudnia 2016 przez Boshi VIP (100,240 p.)
no przecież musisz mieć jakoś powiązane miejsce z danym graczem?
komentarz 3 grudnia 2016 przez DaltooN Początkujący (430 p.)
Właśnie chodzi mi o to, jak mam sprawdzić to miejsce, na wyświetlonej tabeli. Chodzi mi o to że w momencie kiedy mam listę np.

Maciek 5

Michał 4

Jasiek 2

Jan 0

To jak odczytać, miejsce Jaśka (jakim kodem mogę sprawdzić że miejsce Jaśka na liście to 3)

Podobne pytania

0 głosów
2 odpowiedzi 3,201 wizyt
0 głosów
1 odpowiedź 766 wizyt
pytanie zadane 6 lipca 2016 w SQL, bazy danych przez Marshall_ Początkujący (350 p.)
0 głosów
2 odpowiedzi 181 wizyt

92,572 zapytań

141,422 odpowiedzi

319,644 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...