Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zapytanie dot. dat
Forum PHP.pl > Forum > Bazy danych > MySQL
slash^
Witam

Mam taka oto strukture tabeli:

  1. CREATE TABLE `dni` (
  2. `dzien` date NOT NULL DEFAULT '0000-00-00',
  3. `licznik` bigint(20) NOT NULL DEFAULT '0'
  4. ) TYPE=MyISAM;


baza zawiera ok. 600 rekordów z liczbami odwiedzic w danym dniu. I teraz moje pytanie brzmi:
Jak napisac zapytanie, które by zwrocilo mi sume wizyt z poszczegolnych miesiecy, tj.
styczen 2000 - 150 odwiedzin
luty 2000 - 200 odwiedzin
marzec 2000 - 120 odwiedzin

itd...

help sad.gif
Ar2r
Witam,

Możesz posłużyć się takimi instrukcjami jak SUM, MONTH, YEAR np.

gdy chcesz za konkretny miesiąc i rok:
SELECT SUM(licznik) FROM dni WHERE MONTH(dzien)=XX AND YEAR(dzien)=XXXX
guitar.gif
harmag
ja bym wykorzystal do tego celu grupowanie wedlug miesiaca.
wydaje mi sie ze mozna by to zrobic przy pomocy jednego podzapytania przyjmujac dwa kryteria grupowania - rok i miesiac, ale nie przychodzi mi to teraz do glowy, wiec pokaze ci inne (mniej efektywne) rozwiazanie.

  1. <?php
  2.  
  3. //wybiermay sobie poszczegolne lata z tabeli
  4. $query = &#092;"select DATE_FORMAT(data,'%Y') as rok from dni group by DATE_FORMAT(data,'%Y') order by rok DESC;\";
  5. $result = mysql_query($query);
  6.  
  7. //dla kazdego roku zliczamy ilosc odwiedzin w miesiacu
  8. while($row = mysql_fetch_array($result))
  9. {
  10. $query2 = &#092;"select DATE_FORMAT(data,'%m') as miesiac,sum(licznik) as ilosc from dni where DATE_FORMAT(data,'%Y') = \".$row[\"rok\"].\" group by DATE_FORMAT(data,'%m') order by miesiac DESC;\";
  11. $result2 = mysql_query($query2);
  12.  
  13. echo&#092;"rok - \".$row[\"rok\"];
  14.  
  15. while($row2 = mysql_fetch_array($result2))
  16. {
  17. echo&#092;"miesiac - \".$row2[\"miesiac\"].\" ilosc odwiedzin - \".$row2[\"ilosc\"];
  18. }
  19. }
  20.  
  21. ?>


mam nadzieje ze wiekszej gafy nie palnalem bo pisale mtak troszke z palca a tak troszke z jakiegos tam mojego skryptu wycinalem. nazyw tabel i kolumn staralem sie dopasowac do twoich.

pozdr.
popbart
  1. SELECT date_format(dzien,'%Y-%m') AS miesiac, sum(licznik) AS suma
  2. FROM dni GROUP BY miesiac
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.