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

Requêtes MySQL Discussion :

Count() sur les 30 derniers jours ?


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 96
    Points : 45
    Points
    45
    Par défaut Count() sur les 30 derniers jours ?
    Bonjour,

    Je ne sais pas si cela est possible mais je cherche à afficher le nombre d'annonces sur les 30 derniers jours de mon site.

    Pour cela je suis partis sur cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT DATE_FORMAT( annonce_date_ajout,  "%Y-%m-%d" ) AS DATE, COUNT( annonce_id ) AS  "Nombres d'annonces créées"
    FROM  `annonce` 
    GROUP BY DATE_FORMAT( annonce_date_ajout,  "%Y-%m-%d" ) 
    ORDER BY YEAR( annonce_date_ajout ) , MONTH( annonce_date_ajout ) , DAY( annonce_date_ajout ) 
    LIMIT 100
    Ce qui m'affiche bien ça



    mon seul problème est qu'il y a des "trous" de dates, alors que j'aimerai toutes les afficher avec le chiffre 0 en face, mais comment faire puisqu'aucune entrée n'existe pour cette date...

    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Soit il y a une focntion MySql qui peu générer une série de date, soit il vous faut une table date.

    Suite à ça il faudra utiliser une jointure externe sur votre table annonce et faire votre group by / count().


    Sinon concernant votre requête de base ca serai peut-être interessant de gérer dans la clause where : "les 30 derneirs jours" plutôt que de faire un limit 100

  3. #3
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Citation Envoyé par punkoff Voir le message
    Soit il y a une focntion MySql qui peu générer une série de date, soit il vous faut une table date.

    Suite à ça il faudra utiliser une jointure externe sur votre table annonce et faire votre group by / count().


    Sinon concernant votre requête de base ca serai peut-être interessant de gérer dans la clause where : "les 30 derneirs jours" plutôt que de faire un limit 100
    En fait s'il fait une jointure interne (INNER JOIN) avec la table des 30 dates il n'aura plus à gérer cette limite.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    mon seul problème est qu'il y a des "trous" de dates, alors que j'aimerai toutes les afficher avec le chiffre 0 en face
    Du coup l'inner join ca risque de faire le même résutlat qu'actuellement.

  5. #5
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Tu as raison, il lui faudra faire un LEFT JOIN à partir de la table temporaires.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 96
    Points : 45
    Points
    45
    Par défaut
    Je vois donc que je suis obligé de passer par une table supplémentaire..
    Bon ca ne m'arrange pas..

    Merci de vos réponses dans tous les cas..

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/06/2014, 14h28
  2. Compteur total de sessions sur les N derniers jours
    Par sergio25 dans le forum SharePoint
    Réponses: 1
    Dernier message: 25/11/2008, 16h52
  3. Réponses: 7
    Dernier message: 09/10/2008, 15h18
  4. Requête de tri sur les 20 derniers enregistrements
    Par kryogen dans le forum Langage SQL
    Réponses: 16
    Dernier message: 16/04/2007, 10h40
  5. [MySQL] Requête de tri sur les 20 derniers enregistrements
    Par kryogen dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/04/2007, 10h26

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