Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP]Problem Wyswietlanie rekordu z bazy bez duplikatu
Forum PHP.pl > Forum > Przedszkole
robert5555
Witajcie jako podszkoliłem sie w php piszę swoje skrypty tylko podczas pisania mojej strony natrafiłem na błąd .

Problem jest taki mam tabelke w bazie danych o nazwie x zapisuja tam się rekordy graczy są ich setki i duzo o tym samej nazwie np

http://scr.hu/7bt/vsyrv

i Probelm ktwi w tym ze wyswietlam te rekordy na stronie z najszybszym czasem tylko np jezeli ktos np jest 2x jak na scenie to go 2x wyswietla na stronie chodzi mi zeby nie dublokowało tylko pokazało raz z najmniejsyzm czasem przykładowo n jesli w bazie mam
xx czas 59s i xx czas 74s to zeby tylko wyswietliło "xxx czas 59" a oto moj skrypt

  1. $query = safe_sql("
  2. SELECT nick, czas FROM ".$config['db_player'].".wymiarr
  3. WHERE nick NOT LIKE '[Admin]%'
  4. ORDER by czas limit 5");
  5.  
  6. $i = 1;
  7. $ranking = '';
  8.  
  9. while($wymiar = mysql_fetch_array($query)) {
  10.  
  11. $nick = $wymiar['nick'];
  12. $czas = $wymiar['czas'];
  13. $min = floor ($czas / 60);
  14. $sec = $czas % 60;
  15. if($wymiar["nick"] != Admin) {
  16. $ranking .= '
  17. <div class="rankRow">
  18. <div class="left">'.$i.'. '.$wymiar['nick'].'</div>
  19. <div class="rright"> '.$min.':'.$sec.' </div>
  20. </div>';
  21. $i++;
  22. }
  23. }
  24. return $ranking;
  25. }
Damonsson
SELECT DISTINCT nick itd...
Jinbe
Cytat(Damonsson @ 23.09.2012, 22:04:47 ) *
SELECT DISTINCT nick itd...


Chyba raczej SELECT nick, MIN(czas)? Bo DISTINCT mu za bardzo nie pomoże przy parach nick, czas - usunie jedynie duplikaty, kiedy zarówno nick, jak i czas są takie same. A on chce uzyskać najlepszy czas dla każdego nicka.
kyku
Samo MIN w tym przypadku też nic nie da. SELECT nick, MIN(czas) pobierze wszystkie nicki i minimalny czas (ale nie dla każdego z osobna nicku)
Proponuję group by, czyli:
http://weblogs.sqlteam.com/jeffs/archive/2...r-by-error.aspx
robert5555
Probowałem SELECT nick, MIN(czas) ale wtedy pobiera mi tylko jeden rekord ;/
Damonsson
Fakt, nie doczytałem do końca, myślałem, że chcesz ukrywać rekordy z tym samym czasem dla danego nicku tongue.gif

Możesz zrobić np tak
  1. SELECT nick, czas FROM XXX GROUP BY nick ORDER BY min(czas) LIMIT 5
robert5555
Cytat(Damonsson @ 24.09.2012, 00:46:26 ) *
Fakt, nie doczytałem do końca, myślałem, że chcesz ukrywać rekordy z tym samym czasem dla danego nicku tongue.gif

Możesz zrobić np tak
  1. SELECT nick, czas FROM XXX GROUP BY nick ORDER BY min(czas) LIMIT 5


hmm działa nie clonuje nicków tlyko wyświetla zle czas np TOP 1 jest 1:18 a powino byc 0:45 jak mam w bazie

PS

  1. $query = safe_sql("
  2. SELECT nick, czas FROM ".$config['db_player'].".wymiar
  3. WHERE nick NOT LIKE '[ADMIN]%'
  4. ORDER by czas limit 5");


Wyswietla dobrze tylko clonuje jak dodam jak pisałem na góze to zle sortuje
mmmmmmm
  1. $query = safe_sql("
  2. SELECT nick, Min(czas) czas FROM ".$config['db_player'].".wymiar
  3. WHERE nick NOT LIKE '[ADMIN]%'
  4. GROUP BY nick
  5. ORDER by czas limit 5");
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.