Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/11/2011, 19h19   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 84
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 84
Points : 13
Points : 13
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 :
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
Kijer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 09h00   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 644
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 644
Points : 2 641
Points : 2 641
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
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 09h12   #3
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

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

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
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)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 10h09   #4
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 644
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 644
Points : 2 641
Points : 2 641
Citation:
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.
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 11h33   #5
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

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

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
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)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2011, 22h01   #6
Candidat au titre de Membre du Club
 
Inscription : décembre 2005
Messages : 84
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 84
Points : 13
Points : 13
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..
Kijer est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h50.


 
 
 
 
Partenaires

Hébergement Web