Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Tworzenie statystyki
Forum PHP.pl > Forum > Przedszkole
boro11
Witam!
W bazie danych mam następującą strukture:



itd. itd.

Rekordów jest w tej tabeli tysiące albo ich setki.

Chcę zrobić zestawienie który użytkownik(nick) zarobił najwięcej w danym przedziale czasu, chodzi mi o ubiegły tydzień.

Jak skonstruować zapytanie w php tak aby mi to policzyło?

Co mam wpisać w warunku where, nie chodzi nawet o porównywanie daty bo to nie jest problemem, ale co mam wpisać user = ?, żeby liczyło każdy wystąpienie dla usera razem do jego całkowitego wyniku, a nie oddzielnie. Zakładająć, że nie wiem który użytkownik zarabia najwięcej i chce to dopiero sprawdzić.
CuteOne
Najprostsze rozwiązanie to pogrupowanie wyników (GROUP BY `nick`) oraz sumowanie (SUM(`amount`) as total)
boro11
Dziękuję bardzo za naprowadzenie smile.gif

Wrzucam co stworzyłem:

  1. <?
  2. $stamp = strtotime("-1 week");
  3. $data = date("Y-m-d", $stamp);
  4.  
  5. $query = "SELECT nick, SUM(amount) FROM test_sitepay WHERE date > '$data' GROUP BY nick ORDER BY SUM(amount) DESC LIMIT 10";
  6.  
  7. $result = mysql_query($query) or die(mysql_error());
  8.  
  9. echo "<table border='1'>";
  10. echo "<tr> <th>Username</th> <th>Amount:</th> </tr>";
  11.  
  12. while($row = mysql_fetch_array( $result )) {
  13.  
  14. echo "<tr><td>";
  15. echo $row['nick'];
  16. echo "</td><td>";
  17. echo $row['SUM(amount)']."$";
  18. echo "</td></tr>";
  19. }
  20.  
  21. echo "</table>";
  22. ?>


Może komuś się przyda, a jeśli ktoś ma jakieś uwagi jakby to zoptymalizować to chętnie posłucham smile.gif
mmmmmmm
1. Nadawaj aliasy. Nazwa pola - Sum(amount) jest dość nieprzyjazna.
2. Nazwy pól używaj w grawisach - `. Zarówno w MySQL, jak i PHP "date" jest funkcją - może to narobić kłopotów.
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.