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 23/07/2011, 15h28   #1
Invité régulier
 
Inscription : avril 2008
Messages : 24
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 24
Points : 8
Points : 8
Par défaut Compter le nombre de ligne d'année différente dans un champ 'date'

Bonjour,

J'expose mon problème...

j'ai une table d'article avec pour chacun un champ 'date' classic du type (aaaa-mm-jj).

ex :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
|-----------------|
| id |     date   |
|-----------------|
| 1  | 2011-05-07 |
| 2  | 2010-04-12 |
| 3  | 2009-10-22 |
| 4  | 2010-01-25 |
| 5  | 2011-05-07 |
| 6  | 2011-07-24 |
| 7  | 2011-02-18 |
|-----------------|
Je voudrais donc compter le nombre d'article par année. CAD, avoir un résultat dans un tableau du style : 2009 => 1, 2010 => 2, , 2011 => 4

Si qq pouvais me donner la solution, sinon je rajouterai un champ avec juste les années pour simplifier
stevensf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2011, 16h25   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 008
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 008
Points : 18 279
Points : 18 279
Envoyer un message via MSN à CinePhil
Dans la doc de MySQL sur les fonctions de dates et heures, tu trouveras ton bonheur avec YEAR. En SQL pur, ce serait EXTRACT(YEAR FROM la_colonne_date)
Un COUNT(*) et un GROUP BY finiront de résoudre le problème.

Tu essaies tout seul ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2011, 16h34   #3
Invité régulier
 
Inscription : avril 2008
Messages : 24
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 24
Points : 8
Points : 8
yep vais voir ca... si j'y arrive pas je te demanderais de l'aide

merci en tout cas
stevensf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2011, 16h57   #4
Invité régulier
 
Inscription : avril 2008
Messages : 24
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 24
Points : 8
Points : 8
j'ai avancé mais il me reste une truc à trouver, comment nommer le tableau de mon résultat avec le nom des différentes années

Code :
1
2
3
SELECT COUNT(*) 
FROM ma_table 
GROUP BY year(actu_date)
ca me sort : Array ( [COUNT(*)] => 1 ) Array ( [COUNT(*)] => 2 ) cad 1 résultat pour 2010 et 2 résultats pour 2011

ce que je voudrai c'est un truc du style : Array ( [2010] => 1 ) Array ( [2011] => 2 )
stevensf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2011, 17h08   #5
Invité régulier
 
Inscription : avril 2008
Messages : 24
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 24
Points : 8
Points : 8
bon j'arrive à avoir ce que je veux mais je sais pas si c'est la meilleur méthode :

Code :
1
2
3
SELECT COUNT(*) AS total, year(actu_date) 
FROM ma_table 
GROUP BY year(actu_date)
ce qui me sort un truc comme ca :
Array ( [total] => 1 [year(actu_date)] => 2010 ) Array ( [total] => 2 [year(actu_date)] => 2011 )

c'st ce que je veux mais j'aurai préféré un nom un peu moins compliqué à la place de year(actu_date) dans le résultat...

du genre : Array ( [total] => 1 [annee] => 2010 ) Array ( [total] => 2 [annee] => 2011 )

en tout cas, merci à ce post qui m'a bcp aidé : http://www.developpez.net/forums/d19...date-datetime/
stevensf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2011, 00h01   #6
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 008
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 008
Points : 18 279
Points : 18 279
Envoyer un message via MSN à CinePhil
Il suffit de mettre un alias sur le nom de la colonne de calcul :
Code :
1
2
3
SELECT COUNT(*) AS total, year(actu_date) AS Annee
FROM ma_table 
GROUP BY year(actu_date)
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 08h26   #7
Invité régulier
 
Inscription : avril 2008
Messages : 24
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 24
Points : 8
Points : 8
a ben oui tout bétement... merci pour ton aide et bonne journée
stevensf est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h26.


 
 
 
 
Partenaires

Hébergement Web