![]() |
![]() |
![]()
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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/smile.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 319 Pomógł: 118 Dołączył: 26.11.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
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
|
|
|
![]()
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 (IMG:style_emoticons/default/smile.gif) Dziękuję za wypowiedzi, gdyż użyłem GROUP BY. Daję oczywiście zasłużonego "plusika" (IMG:style_emoticons/default/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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 23:57 |