Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Top15 czasów przejścia map
GwynBleidD
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 9
Dołączył: 16.01.2010
Skąd: Kraków

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


Witam!

Prowadzę serwer Counter Strike Kreedz, ale mniejsza z tym. Posiadam na nim plugin, który każde przejście mapy zapisuje do bazy. W jednym rekordzie znajduje się: czas przejścia, SteamID (identyfikator graczy z ORYGINALNĄ grą, niestety większość osób gra na piratach, także nie wskazuje to jednoznacznie na gracza), IP, nick i jeszcze inne parametry przejścia, które raczej nie będą tu potrzebne smile.gif (ale wymienię: broń, ilość CheckPointów, GoChecków, mapę i czas/datę - timestamp przejścia).

Planuję wyświetlać na stronce internetowej przy forum serwera prostą statystykę, czyli top15, ale nie czasów lecz graczy z najlepszymi czasami, co oznacza że każdy gracz może wystąpić w top15 TYLKO RAZ. Każdego gracza identyfikuje albo SteamID, albo IP, albo nick, to w zależności czy ma oryginalną wersję gry czy nie. Jeśli ma to przejmujemy się tylko SteamID, jeśli nie, to patrzymy na IP i nick. I tu się pojawia mój problem... jak wyciągnąć 15 najlepszych czasów tak żeby był unikalny albo SteamID albo ip i nick.

Proszę o pomoc

Delikatnie odświeżam, nie popędzam oczywiście nikogo, po prostu nie chcę żeby mój temat zaginął bez odpowiedzi smile.gif
Go to the top of the page
+Quote Post
Daimos
post
Post #2





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

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


DISTINCT


--------------------
scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
Go to the top of the page
+Quote Post
bleblok
post
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 6
Dołączył: 15.09.2009

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


SELECT SteamID , min(`czas`) FROM `czasy` GROUP BY 1 ORDER BY 2 DESC
Go to the top of the page
+Quote Post
GwynBleidD
post
Post #4





Grupa: Zarejestrowani
Postów: 28
Pomógł: 9
Dołączył: 16.01.2010
Skąd: Kraków

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


hmm, widzę że nie do końca zadałem zrozumiale pytanie, może podam kilka przykładowych danych:

Kod
SteamID            IP                nick        czas

STEAM_0:0:1213415    122.111.211.121    Gracz1    12212
STEAM_0:0:3113221    221.129.146.151    Gracz2    22155
STEAM_ID_LAN        221.229.189.199    Gracz3    10596
STEAM_ID_LAN        174.204.152.234    Gracz4    43012
STEAM_0:0:1213415    122.111.211.121    Gracz1    32212
STEAM_0:0:3113221    221.129.101.6        Gracz2    22155


STEAM_ID_LAN to jest właśnie 2ch graczy, którzy nie posiadają oryginalnego CSa (tzw. non-steamowcy) i ich muszę odróżniać za pomocą nicku/ip. graczy steamowych muszę odróżnić za pomocą SteamID. Podane przez Was rozwiązania spowodują, że Gracz3 i Gracz4 zostaną potraktowani jako jeden gracz. Czy jest sposób grupowania wyników jeśli dana kolumna nie jest równa jakiejś wartości? (może być NOT NULL, bo zmiana STEAM_ID_LAN na null to nie problem) a może istnieje sposób na posortowanie wyników dwóch zapytań oddzielonych średnikiem?

//edycja
Problem rozwiązany, nie średnik a UNION smile.gif Dziękuję za wypowiedzi, gdyż użyłem GROUP BY. Daję oczywiście zasłużonego "plusika" smile.gif

//edit2
Pojawił się jednak jeszcze jeden problem. Jak sformułować zapytanie, żeby uzyskać z niego: wszystkie czasy danego gracza oraz które miejsce w rankingu zajmuje (na podstawie najlepszego czasu)?

Ze zrobieniem tego osobno nie byłoby problemu (znaleźć wszystkie czasy gracza a następnie policzyć countem wszystkie czasy w bazie, które są mniejsze od podanego, czyli 2 zapytania), ale czy da się to połączyć w jedno zapytanie?

Ten post edytował GwynBleidD 5.01.2011, 12:04:56
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 Aktualny czas: 19.08.2025 - 14:58