Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Twoja pozycja w rankingu
Shinji
post 9.07.2013, 11:28:55
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 1
Dołączył: 28.11.2006

Ostrzeżenie: (0%)
-----


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 =)

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
buliq
post 9.07.2013, 12:42:21
Post #2





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


jest możliwe, ale nie wiem czy wyjdzie optymalnie.


--------------------
KTOŚ TU PACZY???

Kompedium wiedzy
Go to the top of the page
+Quote Post
Shinji
post 9.07.2013, 12:49:04
Post #3





Grupa: Zarejestrowani
Postów: 50
Pomógł: 1
Dołączył: 28.11.2006

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
buliq
post 9.07.2013, 13:02:43
Post #4





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


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

Ten post edytował buliq 9.07.2013, 13:04:13


--------------------
KTOŚ TU PACZY???

Kompedium wiedzy
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.07.2025 - 12:54