2009-03-30 5 views
6

je lance un magazine en ligne et je voudrais un moyen mort simple à suivre 3 paramètres:mySQL Query pour afficher le nombre de commentaires que mon site a reçu chaque jour?

  1. Combien de commentaires sont laissés chaque jour.
  2. Combien de liens mes utilisateurs soumettent.
  3. Combien de nouveaux membres je reçois chaque jour.

Cette information est toute ma base de données, je ne suis pas sûr de savoir comment le sortir.

J'ai une table "comments" avec environ 3500 commentaires. Chaque commentaire obtient une ligne dans la table. L'une des colonnes de la table est "timestamp". Je suppose qu'il y a une requête qui va sélectionner cette table, trier les lignes par horodatage, les grouper par incréments de 24 heures et ensuite compter le nombre de lignes dans chaque groupe - en me disant combien de nouveaux commentaires j'ai reçus journée.

À quoi ressemblerait cette requête? Je pense que je peux comprendre les autres si j'avais le premier travail.

+0

De quel type est la colonne d'horodatage? Est-ce un TIMESTAMP réel, un DATE/DATETIME d'une sorte, ou est-ce un INT stockant un horodatage unix? – Powerlord

+0

Il s'agit d'un int (11) contenant un horodatage Unix. – FGM

Répondre

7

Ce fragment affiche vos résultats dans un tableau sur le thème:

$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)); 

par date (horodatage) ne fonctionne pas parce que comments.timestamp est au format UNIX_TIMESTAMP, alors que DATE() attend un ASCII rendez-vous amoureux.

0

Utilisez la fonction date_format() pour formater les dates;

select count(id) as commentCount, date_format(dateColumn, '%Y-%m-%d') as commentDate 
from yourTable 
group by commentDate 
Questions connexes