Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Twoja pozycja w rankingu
Forum PHP.pl > Forum > Bazy danych > MySQL
Shinji
Hej.
Mam tabelę składającą się z username i points.
Zastanawiam się czy jest możliwe (póki co nie wychodzi mi to), aby za pomocą jednego zapytania i bez udziału PHP wyciągnąć z bazy mój wynik i po dwa wyniki lepsze i gorsze ode mnie + dokleić pozycję w rankingu ogólnym na podstawie punktów.

Ale w momencie kiedy np jestem pierwszy to zamiast dostać tylko 2 wyniki z tyłu dostaje 4 - tak by zawsze było dopełnienie w sumie do 5 wyników. I podobnie w przypadku, gdy jestem ostatni.

I ostatnia zasada działania - osoby o tym samym wyniku są na tym samym miejscu.

Czyli np coś takiego:

rank | username | points
-----------------------------
50 | besciak | 100
51 | ktoś #1 | 90
52 | JA | 85
52 | ktoś #3 | 85
53 | ktoś #4 | 10

a w przypadku kiedy jestem ostatni:

rank | username | points
-----------------------------
50 | besciak | 100
51 | ktoś #1 | 50
52 | ktoś #2 | 40
53 | ktoś #3 | 20
54 | JA | 10

Mam nadzieje, że zbytnio nie zachachmęciłem =)

buliq
jest możliwe, ale nie wiem czy wyjdzie optymalnie.
Shinji
a mógłbyś zdradzić tajemnicę jakby miało to wygladać w wersji czystego mysql i masz może jakiś pomysł odnośnie optymalnego wyjścia?
buliq
Nie ma optymalnego wyjścia, bo trzeba użyć podzapytań.
Tworzysz zapytania z UNION i sprawdzasz IF czy jesteś pierwszy czy drugi czy trzeci.
Nie stworzę zapytania bo zrobię robotę za Ciebie smile.gif


Możesz zrobić sobie z użyciem PHP prostsze rozwiązanie:
1 zapytanie pobiera ciebie i miejsce na którym jesteś
w zależności od miejsca robisz kolejne zapytanie/a i dobierasz pozostałe rekordy
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.