Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL][PHP]Problem Wyswietlanie rekordu z bazy bez duplikatu
robert5555
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 10.04.2012

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


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. }
Go to the top of the page
+Quote Post
Damonsson
post
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


SELECT DISTINCT nick itd...
Go to the top of the page
+Quote Post
-Jinbe-
post
Post #3





Goście







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.
Go to the top of the page
+Quote Post
kyku
post
Post #4





Grupa: Zarejestrowani
Postów: 116
Pomógł: 8
Dołączył: 21.11.2008

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


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

Ten post edytował kyku 23.09.2012, 23:07:52


--------------------
eArena.pl - hosting serwerów gier multiplayer
Go to the top of the page
+Quote Post
robert5555
post
Post #5





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 10.04.2012

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


Probowałem SELECT nick, MIN(czas) ale wtedy pobiera mi tylko jeden rekord ;/

Ten post edytował robert5555 23.09.2012, 23:36:31
Go to the top of the page
+Quote Post
Damonsson
post
Post #6





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


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


Ten post edytował Damonsson 23.09.2012, 23:49:02
Go to the top of the page
+Quote Post
robert5555
post
Post #7





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 10.04.2012

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


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

Ten post edytował robert5555 24.09.2012, 03:06:32
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #8





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


  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");
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: 21.08.2025 - 18:19