Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]sumowanie danych
Forum PHP.pl > Forum > Przedszkole
ht37
  1. <?
  2. $result = mysql_query('SELECT nazwisko, SUM(pkt) AS `pkt` FROM klub
  3. GROUP BY nazwisko  LIMIT 5'
  4. );
  5.  
  6. while($row = mysql_fetch_array($result))
  7. { echo '<tr><td>'.$row['nazwisko'].'</td><td> '.$row['pkt'].'</td></tr>';
  8. }
  9. ?>


Chodzi o powyższy kod:
Program sumuje wszsytkie wartości z kolumny pkt.
W jaki sposób zmienić kod, żeby sumował tylko 3 najwyższe wartości z kolumny pkt?

Pozdrawiam,
empathon
  1. SELECT DISTINCT nazwisko, (SELECT SUM(pkt) FROM klub ORDER BY pkt DESC LIMIT 3 ) AS `pkt` FROM klub LIMIT 5


Coś w ten deseń - pisane z palca.
Mogę się mylić, że jest to optymalne rozwiązanie.

Edit: Źle. Bez widoku się chyba nie obejdzie (albo dziś nie widzę oczywistych rozwiązań). Problemem jest tu ten LIMIT.

Dodajesz widok:
  1. CREATE VIEW nazwiska_pkt (nazwisko, suma_max_pkt) AS SELECT nazwisko, SUM(pkt) FROM klub GROUP BY nazwisko ORDER BY pkt DESC LIMIT 3 ;

A potem w zapytaniu:
  1. SELECT DISTINCT klub.nazwisko, nazwiska_pkt.syma_max.pkt FROM klub, nazwiska_pkt WHERE klub.nazwisko = nazwiska_pkt.nazwisko LIMIT 5


BTW. pokaż BD bo to wszystko powinno działać w oparciu o ID nie nazwisko!
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.