Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Top15 czasów przejścia map
Forum PHP.pl > Forum > Bazy danych > MySQL
GwynBleidD
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
Daimos
DISTINCT
bleblok
SELECT SteamID , min(`czas`) FROM `czasy` GROUP BY 1 ORDER BY 2 DESC
GwynBleidD
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?
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.