Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Grupowanie rekordów wg czasu
Forum PHP.pl > Forum > Przedszkole
adam882
Witam

Posiadam w bazie rekordy z datą dodania w formacie unixowym (dodanym funkcją time() i przechowywanym jako INT).

ID (int) | NAZWA (varchar) | DATA (int)

Chcę za pomocą pętli wyciągnąć zliczone rekordy, które zostały dodane w ciągu tygodnia. Mógłby mi ktoś w tym pomóc?
nospor
Ciężko do manuala zajrzeć?
http://dev.mysql.com/doc/refman/5.5/en/dat...-functions.html
Cytat
Here is an example that uses date functions. The following query selects all rows with a date_col value from within the last 30 days:
mysql> SELECT something FROM tbl_name
-> WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;
adam882
Zrobiłem coś takiego
  1. SELECT nazwa, DATA FROM wpis WHERE DATA BETWEEN '.(time()-(3600*24*7)).' AND '.time().'


Wyświetla mi teraz rekordy dodane w ciągu 7 dni, ale nie wiem w jaki sposób pogrupować je tak, aby wyświetlało ile rekordów jest dodanych w danym dniu. Próbowałem dodać GROUP BY data, ale nie wychodzi.
nospor
Cytat
Próbowałem dodać GROUP BY data
No bo data zawiera sekundy. Trudno oczekiwać by ci pogrupował po sekundach jak po dniach. Zanim użyjesz GROUP BY to muisz sformatować data do formatu yyyy-mm-dd. Funkcję do tego masz w linku co ci podałem
adam882
Mam teraz takie zapytanie:
  1. $q=mysql_query("SELECT data, count(id) AS ile FROM wpis WHERE data BETWEEN ".(time()-(3600*24*7))." AND ".time()." GROUP BY DATE_FORMAT(data, '%Y-%m-%d')");

nadal nie mogę sobie z tym poradzić sad.gif - wyświetla ilość wpisów dodanych w przeciągu tygodnia, ale pętla zwraca jedynie jeden rekord. W jaki sposób można zrobić, aby pętla zwracała w tym przypadku 7 rekordów z ilością ile zostało dodanych wpisów?
nospor
A pokaż tę pętlę
adam882
Mam taki kod:

  1. $dodawane=mysql_query("SELECT data, count(id) AS ile FROM wpis WHERE data BETWEEN ".(time()-(3600*24*7))." AND ".time()." GROUP BY DATE_FORMAT(data, '%Y-%m-%d')");
  2. while($r=mysql_fetch_array($dodawane))
  3. {
  4. echo date('j-m-Y',$r['data']).' => '.$r['ile'].'<br />';
  5. }

Wydaje mi się, że zwraca mi po prostu sumę z wszystkich wpisów dodanych w przeciągu tygodnia
nospor
No to może w ciągu tego tygodnia rekordy były dodawane tylko jednego dnia, stąd tylko jeden rekord? smile.gif
adam882
Już wiem, powinno być FROM_UNIXTIME zamiast DATE_FORMAT
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.