IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Groupement sur date + calcul de la somme [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2008
    Messages : 15
    Par défaut Groupement sur date + calcul de la somme
    Bonjour,
    Je me permets de poser la question après des recherches et essais infructueux.

    Je crée un système de points de fidélité :
    timestamp,points
    125151515,10
    125151516,8
    125151517,9
    etc ...

    J'ai besoin de 2 choses :
    - Faire un groupement sur le timestamp, mais sur chaque jour.
    - faire l'addition des points

    J'ai bien compris le GROUP BY mais un timestamp "pur" n'est pas une journée. Il doit être converti ??
    Ensuite comment faire en sorte que l'autre champ "points" s'additionne sur 1 jour ?

    En fait, je voulais une sortie de type :
    01/01/2015 18 points
    02/01/2015 9 points
    etc ...

    Par avance, je vous remercie.
    Vince

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il faut le convertir en jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DATE_FORMAT(FROM_UNIXTIME(`timestamp`), '%Y-%m-%d'), SUM(`points`) FROM tatable GROUP BY DATE_FORMAT(FROM_UNIXTIME(`timestamp`), '%Y-%m-%d')
    Utilise plutôt un un champs datetime.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2008
    Messages : 15
    Par défaut
    Bonjour et un grand merci.
    Je comprends maintenant la requête SQL, mais comment afficher les éléments ?

    Dans un cas simple, dans la boucle, je fais
    mais dans ce cas-ci ?

    Encore merci,


    Citation Envoyé par sabotage Voir le message
    Il faut le convertir en jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DATE_FORMAT(FROM_UNIXTIME(`timestamp`), '%Y-%m-%d'), SUM(`points`) FROM tatable GROUP BY DATE_FORMAT(FROM_UNIXTIME(`timestamp`), '%Y-%m-%d')
    Utilise plutôt un un champs datetime.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2008
    Messages : 15
    Par défaut
    En d'autres mots, que mettre à la place des *************

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $db = mysql_connect('localhost', 'xx', '##');
    mysql_select_db('xx',$db);
    $sql = "SELECT DATE_FORMAT(FROM_UNIXTIME(`ts_registration`), '%Y-%m-%d'), SUM(`status`) FROM sites GROUP BY DATE_FORMAT(FROM_UNIXTIME(`ts_registration`), '%Y-%m-%d')";
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    while($data = mysql_fetch_assoc($req))
    {
        *********************
    }
    mysql_close();
    pour afficher un truc du genre :

    lundi 7/11 - 18
    mardi 8/11 - 15
    mercredi 9/11 - 9

    etc ...

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    avec des alias :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $sql = "SELECT DATE_FORMAT(FROM_UNIXTIME(`ts_registration`), '%Y-%m-%d') AS jour, SUM(`status`) AS points FROM sites GROUP BY DATE_FORMAT(FROM_UNIXTIME(`ts_registration`), '%Y-%m-%d')";
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    while($data = mysql_fetch_assoc($req))
    {
        echo $data['jour'] . ' : ' . $data['points'] . '<br/>';
    }
    Au passage l'extension php mysql est obsolète, utilise PDO.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2008
    Messages : 15
    Par défaut
    Wouw la classe !
    merci j'ai appris quelque chose aujourd'hui...

    Bon weekend.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Calcul sur date dans SQL
    Par Tchupacabra dans le forum WinDev
    Réponses: 4
    Dernier message: 27/02/2006, 19h23
  2. [Dates] Calcul tout bête sur une date...
    Par poah dans le forum Langage
    Réponses: 5
    Dernier message: 01/11/2005, 15h02
  3. [débutant] calcul sur date
    Par Regis.C dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 04/01/2005, 10h51
  4. Resutlat de calcul sur date formaté
    Par neness dans le forum SQL
    Réponses: 6
    Dernier message: 16/06/2004, 15h34
  5. Calcul sur date
    Par Thomad dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/09/2003, 08h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo