Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: date() z php w mysql - wybieranie przedziału czasu
Forum PHP.pl > Forum > Bazy danych > MySQL
AceDude
Mam sobie dane statystyczne zapisane w bazie mysql - tabela ma prostą strukturę - pola `data` i `liczba`. Aby wyświetlić dane z ostatniego okresu - wystarczy sobie dodać polecenie "LIMIT 10" na końcu. Ale co w wypadku, kiedy chcę pokazać dane z ostatniego tygodnia (ostatnie 7 dni - potrzebna jest mi suma pola `liczba` dla każdego z nich)?
Może ktoś z was przeszedł już przez ten problem, albo ma namiary na jakiś tutorial?
Cezar708
pokombinuj z BETWEEN, GROUP BY oraz SUM() a na pewno Ci to wystarczy do osiągnięcia Twojego celu

Pozdrawiam
AceDude
Na szybko patrząc - to i tak będę musiał osobno liczyć przedziały dla każdego dnia i zrobić zapytanie - molocha. Jeżeli nie mam racji - popraw mnie.
Cezar708
chcesz da każdego dnia tygodnia wyciągnąć sumę punktów z danego dnia.. w zasadzie ciekawy problem,

Ja najszybciej to zrobiłbym kilka zapytań, ale sprawdzę czy jest jakaś inna możliwość pogrupowania po dniach w tygodniu za pomocą group by.

Jak coś znajdę dam znać

Pozdrawiam
Cezar708

a spróbuj tak:
  1. SELECT DAYOFWEEK(DATA) AS day, sum(liczba)
  2. FROM twoja_tabela WHERE DATA BETWEEN '<dataOd>' AND '<dataDo>'
  3. GROUP BY day;


i powiedz czy zadziałało (sam nie mam na czym sprawdzić sad.gif )

Pozdro

EDIT:

tak nie pójdzie jak powyżej :
  1. SELECT DAYOFWEEK(DATA), sum(liczba)
  2. FROM twoja_tabela WHERE DATA BETWEEN '<dataOd>' AND '<dataDo>'
  3. GROUP BY 1;


tak chyba będzie lepiej.. ale trzeba sprawdzić smile.gif daj znać jak poszło oki?

Pozdro!
AceDude
Dzięki, yakotako działa:
  1. DAYOFWEEK(DATA) sum(liczba)
  2. NULL 1540


Tylko, że nie pogrupowało dniami - pewnie tak być nie miało, ale na czytanie manuala nie mam dzisiaj czasu. sad.gif
Jutro coś jeszcze pokombinuję. Fajnie byłoby to zamknąć w jednym zapytaniu.
Cezar708
a ja popróbowałem ten drugi przykład... i mi działa, ewentualnie można zamiast dayofweek() użyć dayofyear() generalnie mam wszystko ładnie pogrupowane w jednym zapytaniu... wydaje mi się, że jest dobrze smile.gif

Pozdrawiam
AceDude
Ha, śmiga. Dzięki. Cudotwórca z ciebie smile.gif

  1. SELECT DAYOFYEAR( FROM_UNIXTIME(
  2. DATA ) ) , sum( liczba )
  3. FROM dane WHERE DATA BETWEEN '1223100000' AND '1223419603'
  4. GROUP BY 1
  5. LIMIT 0, 30
Cezar708
you're welcome

Pozdr
Cezar708
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.