UNE REQUETE SQL

Signaler
Messages postés
8
Date d'inscription
mercredi 7 janvier 2009
Statut
Membre
Dernière intervention
10 avril 2010
-
Messages postés
22
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
1 décembre 2010
-
BONJOUR LES AMIS
je veux faire une requête qui affiche le nombre de commande par mois trié en ordre croissant; j'ai fais cette requête:

SELECT MONTHNAME(date_commande) AS 'Mois', Count(*) AS 'Nombre de commande'
FROM commande
GROUP BY MONTHNAME(date_commande)
ORDER BY MONTH(date_commande)

ça marche mais je veux que les mois quels n'existent pas s'affichent et le nombre de commande sera afficher 0.

exemple:
voila l'affichage de ma requête

<col style=\"width: 57pt;\" width=\"76\" /><col style=\"width: 129pt;\" width=\"172\" />----
January, 11, ----
March, 1, ----
April, 1, ----
May, 1, ----
June, 1
.
.
.

je veux l'afficher comme ça:
<col style=\"width: 57pt;\" width=\"76\" /><col style=\"width: 129pt;\" width=\"172\" />----
January, 11, ----
February, 0, ----
March, 1, ----
April, 1, ----
May, 1, ----
June, 1
.
.
.

et merci beaucoup

2 réponses

Messages postés
828
Date d'inscription
mardi 5 octobre 2004
Statut
Membre
Dernière intervention
7 mai 2013
1
Bonjour,

Quelle version de FoxPro, s'il te plait?
Quelle est la définition de ta fonction utilisateur MONTHNAME?
quelle est la structure de la table commande?
Messages postés
22
Date d'inscription
dimanche 27 janvier 2008
Statut
Membre
Dernière intervention
1 décembre 2010

Il faut créer une deuxième table contenant tous les mois de l'année et faire une jointure avec la table actuelle.
Quelque chose comme :

Create Table liste_mois (mois C(9))
INSERT INTO liste_mois VALUES( "janvier")
INSERT INTO liste_mois VALUES( "février")
...
...
SELECT c.mois , Count(*) AS 'Nombre de commande'
FROM liste_mois a LEFT OUTER JOIN commande c ON a.mois = Month(c.datcommande) ;
GROUP BY 1 ORDER BY 1 ...

Mais cette requête ne fonctionne qu'avec VFP9 et doit être ajustée en fonction de la structure de la table commande.

Il faut donc préciser ces deux points ...

Cordialement

Jean à Grenoble