2009-03-30 9 views
6

mogę uruchomić internetowy magazyn i chciałby martwego-prosty sposób śledzić 3 metryki:Zapytanie mySQL do listy liczby komentarzy, które moja strona codziennie otrzymywała?

  1. Ile komentarzy lewo są każdego dnia.
  2. Ile linków przesyłają moi użytkownicy.
  3. Ilu nowych członków dostaję każdego dnia.

Ta informacja jest moją bazą danych, po prostu nie wiem, jak ją pobrać.

Mam tabelę "komentarzy" z około 3500 komentarzami. Każdy komentarz otrzymuje wiersz w tabeli. Jedną z kolumn w tabeli jest "znacznik czasu".

Zakładam, że istnieje zapytanie, które wybierze tę tabelę, posortuje wiersze według znacznika czasu, pogrupuje je w 24-godzinne przyrosty, a następnie policzy liczbę wierszy w każdej grupie - informując mnie, ile nowych komentarzy otrzymałem każdego dzień.

Jak wyglądałoby to zapytanie? Myślę, że mogę wymyślić inne, gdybym miał pierwszy działający.

+0

Jakiego typu jest kolumna znacznika czasu? Czy jest to rzeczywiście TIMESTAMP, DATE/DATETIME jakiegoś rodzaju, czy jest to INT przechowujące uniksowy znacznik czasu? – Powerlord

+0

Jest to int (11) zawierający uniksowy znacznik czasu. – FGM

Odpowiedz

7

Ten fragment będzie wyświetlać wyniki w tematyce tabeli:

$sq = 'SELECT COUNT(*) cnt, DATE(FROM_UNIXTIME(timestamp)) day ' 
    . 'FROM {comments} c ' 
    . 'GROUP BY 2 ' 
    . 'ORDER BY 2 DESC'; 
$q = db_query($sq); 
$stats = array(); 
while ($o = db_fetch_object($q)) { 
    $stats[$o->day] = array($o->day, $o->cnt); 
} 
return theme('table', NULL, $stats)); 

Korzystanie data (znacznik czasu) nie działa, ponieważ comments.timestamp jest w formacie UNIX_TIMESTAMP, natomiast DATA() oczekuje ASCII data.

0

Użyj funkcji date_format() do formatowania dat;

select count(id) as commentCount, date_format(dateColumn, '%Y-%m-%d') as commentDate 
from yourTable 
group by commentDate 
Powiązane problemy