Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php/mysql] SELECT MAX dane z różnych rekordów
M@X
post 1.06.2008, 20:25:45
Post #1





Grupa: Zarejestrowani
Postów: 212
Pomógł: 0
Dołączył: 18.12.2003
Skąd: Warszawa

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


Witam.
Poniższe zapytanie pobiera największą wartość pola (wynik) z tabeli WYNIKI. Ma się wyświetlać najwyższy wynik i jego data (tak jak jest w danym rekordzie w bazie). Jednak coś jest nietak i wyświetla date z innego rekordu też najwyższego a przecież w zapytaniu MAX tyczy się tylko kolumny (wynik). Co jest źle w tym kodzie questionmark.gif?

  1. <?php
  2. $max=mysql_query('SELECT MAX(wynik), data FROM wyniki WHERE id_usera='.$player.' GROUP BY id_usera='.$player.'');
  3. while($wmax=mysql_fetch_array($max))
  4. {
  5. echo ''.$wmax[0].' - '.$wmax[1].'';
  6. }
  7. ?>


--------------------
"timeo danaos at dona ferentes"
Go to the top of the page
+Quote Post
franki01
post 1.06.2008, 21:47:19
Post #2





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

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


  1. <?php
  2. $max=mysql_query('SELECT MAX(`wynik`), `data` FROM `wyniki` WHERE `id_usera`='.$player.' GROUP BY `id_usera`');
  3. $wmax=mysql_fetch_array($max);
  4. echo $wmax[0].' - '.$wmax[1];
  5. ?>


Klauzula GROUP BY ma złą składnię. I jak chcesz wyciągnąć jeden rekord, to po co do tego pętla?

Jak jeszcze będą problemy, użyj mysql_error" title="Zobacz w manualu PHP" target="_manual i zobacz jaki błąd pokaże.

Ten post edytował franki01 1.06.2008, 21:47:43
Go to the top of the page
+Quote Post
M@X
post 1.06.2008, 22:02:45
Post #3





Grupa: Zarejestrowani
Postów: 212
Pomógł: 0
Dołączył: 18.12.2003
Skąd: Warszawa

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


Niestety dalej wyświetla najwyższy wynik z kolumny 'wynik' ale date z innego rekordu....
Jakieś inne rozwiązania questionmark.gif


--------------------
"timeo danaos at dona ferentes"
Go to the top of the page
+Quote Post
zuvik
post 2.06.2008, 07:58:47
Post #4





Grupa: Zarejestrowani
Postów: 14
Pomógł: 4
Dołączył: 28.11.2007

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


a może takie zapytanie

$max=mysql_query('SELECT wynik, data FROM wyniki WHERE id_usera='.$player.' AND wynik = (SELECT MAX(wynik) FROM wyniki)');

Ten post edytował zuvik 2.06.2008, 07:59:40
Go to the top of the page
+Quote Post
Kocurro
post 2.06.2008, 10:51:22
Post #5





Grupa: Zarejestrowani
Postów: 461
Pomógł: 32
Dołączył: 17.09.2003
Skąd: Łódź

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


U mnie działa.


  1. SELECT MAX( "wynik" ) AS "wynik", "data" FROM "wyniki" WHERE "id_usera" = $1 GROUP BY "data";


Pozdr.
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 Wersja Lo-Fi Aktualny czas: 8.07.2025 - 01:19