Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
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 16/02/2011, 09h44   #1
Membre régulier
 
Inscription : juin 2006
Messages : 549
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 549
Points : 98
Points : 98
Par défaut Problème avec requête pour compter

Bonjour à tous,

Voici ma table T1 :

Nom..............Date...........Mois................Fruit
Martin.........05/01/2011.........Janvier.........Pomme
Martin.........06/01/2011.........Janvier.........Pomme
Martin.........17/01/2011.........Janvier.........Pomme
Martin.........17/01/2011.........Janvier.........Poire
Martin.........19/01/2011.........Janvier.........Pomme
Martin.........05/02/2011.........Février.........Pomme
Martin.........06/02/2011.........Février.........Pomme
Martin.........17/02/2011.........Février.........Pomme
Martin.........17/02/2011.........Février.........Poire
Martin.........19/02/2011.........Février.........Pomme


Je souhaiterais faire la requête R1 qui me donne le résultat suivant : "compter les dates distinctes par mois"
pour obtenir cela...

Martin...Janvier....4
Martin...Février....4



Par contre j'ai fais cette requête...
Code :
1
2
3
SELECT T1.Nom, T1.Mois, Count (T1.Date) AS CompteDeDate
FROM T1
GROUP BY T1.Nom, T1.Mois;
et elle me donne le résultat suivant

Martin...Janvier....5
Martin...Février....5



Pouvez-vous m'aider svp ?
L'idéale serait pour moi de le faire en 1 seule requête...
Si je le fait en 2 requêtes (1 1ère requête de regroupement et une 2ème pour compter... ça marche)


merci

A+

Dams'
damsmut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 11h22   #2
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 410
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 410
Points : 4 439
Points : 4 439
bonjour,

sous Access il faut passer par une sous-requête:

Code :
1
2
3
4
5
6
7
8
9
 
SELECT T1.Nom, T1.Mois, 
SELECT Count(*) as CompteDeDate FROM
(
  SELECT DISTINCT  T2.[Date] FROM T1 as T2
  WHERE T2.Nom=T1.Nom AND T2.Mois=T1.Mois
) SousReq
FROM T1
GROUP BY T1.Nom, T1.Mois;
rédigée sans filet
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 13h32   #3
Membre régulier
 
Inscription : juin 2006
Messages : 549
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 549
Points : 98
Points : 98
ça ne marche pas.. un message s'affiche :

erreur de syntaxe dans l'expression "SELECT Count(*)"
damsmut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 14h05   #4
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
Normal, il y a un SELECT en trop

essaye plutot

Code :
1
2
3
4
5
6
7
SELECT T1.Nom, T1.Mois, 
Count(*) as CompteDeDate FROM
(
  SELECT DISTINCT  T2.[Date] FROM T1 as T2
  WHERE T2.Nom=T1.Nom AND T2.Mois=T1.Mois
) T1
GROUP BY T1.Nom, T1.Mois;
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
si tout est OK, n'oubliez pas de cliquer sur
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 14h59   #5
Membre régulier
 
Inscription : juin 2006
Messages : 549
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 549
Points : 98
Points : 98
marche pas non plus...

une fenêtre s'ouvre et demande d'entrer une valeur pour T1.Nom
damsmut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 16h42   #6
Membre Expert
 
Inscription : mars 2006
Messages : 1 331
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 1 331
Points : 1 460
Points : 1 460
Bonsoir,

Peut-être :
Code :
1
2
3
4
5
6
TRANSFORM Count(T1.Fruit) AS Compteur
  SELECT T1.Nom, T1.Mois, 
  Count(T1.Fruit) AS [Total de Fruit]
FROM T1
   GROUP BY T1.Nom, T1.Mois
          PIVOT T1.Fruit
A voir :

=> Possible Par UNION

=> Mais si on parle de fruits....

Cordialement
__________________
Questions techniques par MP
Le peu que je sais, c'est à mon ignorance que je le dois.
...............................................................................Sacha Guitry
francishop est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 16h44   #7
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
essaye plutot ceci :

Code :
1
2
3
4
 
select t1.nom, t1.mois, count(*)  as CPT from(SELECT DISTINCT Table1.Nom,table1.Date, Table1.Mois
FROM Table1) T1
group by  t1.nom, t1.mois ;
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
si tout est OK, n'oubliez pas de cliquer sur
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 17h25   #8
Membre régulier
 
Inscription : juin 2006
Messages : 549
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 549
Points : 98
Points : 98
marche pas...
message :

"Le moteur de base de données Microsoft Office Access ne peut pas trouver la table ou la requête source Table1. Assurez vous qu'elle existe et qu'elle est correctement orthographiée."
damsmut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 17h37   #9
Membre Expert
 
Inscription : mars 2006
Messages : 1 331
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 1 331
Points : 1 460
Points : 1 460
Bonsoir,

Quel est le nom de ta table?

Cordialement.
__________________
Questions techniques par MP
Le peu que je sais, c'est à mon ignorance que je le dois.
...............................................................................Sacha Guitry
francishop est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 17h41   #10
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
Bonjour à tous,

Je me permets de m'immiscer... et reviens sur le post #4 qui engendré le post #5 :
Citation:
Envoyé par damsmut
marche pas non plus...

une fenêtre s'ouvre et demande d'entrer une valeur pour T1.Nom
Ce message apparaît quand le champ concerné est inconnu. Donc, dans la requête proposée dans le post #4 :
es-tu sûr que tu as correctement orthographié "T1.Nom" ?
es-tu sûr que le nom du champ de la table T1 est "Nom" ?

Juste au cas où...
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 18h10   #11
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
Citation:
marche pas...
message :

"Le moteur de base de données Microsoft Office Access ne peut pas trouver la table ou la requête source Table1. Assurez vous qu'elle existe et qu'elle est correctement orthographiée."
Euh , damsmut ...

merci de controler que la table d'origine correspond bien à la table dans ta base

Nous sommes à dispo pour t'aider, pas pour faire le travail à ta place ! ...

J'ai pris le temps de faire un test avant de t'envoyer la requête, à toi de mettre un peu du tien ...
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
si tout est OK, n'oubliez pas de cliquer sur
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 18h12   #12
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
Sinon :
Code sql :
1
2
3
4
5
SELECT T1.Nom, T1.Mois, Count(*) AS Compteur
FROM
 (SELECT DISTINCT T2.Nom, T2.Date_T1, Month([date_t1]) AS Mois FROM T1 AS T2)
T1
GROUP BY T1.Nom, T1.Mois
fonctionne très bien : testée donc, "avec filet".

Bonjour Jean-Yves,
Nous nous sommes croisés, sur ce coup là...
Lu et approuvé...
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 18h27   #13
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 410
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 410
Points : 4 439
Points : 4 439
je bafouille mon SQL, la fatigue


essayons comme ça:
Code sql :
1
2
3
4
5
6
7
SELECT Temp.Nom,  Temp.Mois, count(*) AS total
 
FROM
(SELECT DISTINCT T1.Nom, T1.Date, T1.Mois
FROM T1) Temp
 
GROUP BY Temp.Nom, Temp.Mois;

[EDIT]
et un wagon de retard en plus, vais me coucher...
[/EDIT]
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 20h11   #14
Membre Expert
 
Inscription : mars 2006
Messages : 1 331
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 1 331
Points : 1 460
Points : 1 460
Bonsoir,

Code :
1
2
3
4
5
6
TRANSFORM Count(T1.Fruit) AS Compteur
  SELECT T1.Nom, T1.Mois, 
  Count(T1.Fruit) AS [Total de Fruit]
FROM T1
   GROUP BY T1.Nom, T1.Mois
          PIVOT T1.Fruit
Donne :
Il est logique d'aller plus loin :
Code :
1
2
3
4
5
6
7
TRANSFORM Count(T1.Fruit) AS Compteur
SELECT T1.Nom, Format([Date],"yyyy") AS [An Action],
 T1.Fruit, Count(T1.Fruit) AS [Total de Fruit]
FROM T1
GROUP BY T1.Nom, Format([Date],"yyyy"), T1.Fruit
ORDER BY Format([Date],"yyyy") DESC 
PIVOT Format([Date],"mmm") In ("Janv","Févr","Mars","Avr","Mai","Juin","Juil","Août","Sept","Oct","Nov","Déc")
Sans oublier :
Dans les propriétés de la requête==> En-têtes des colonnes :
"Janv";"Févr";"Mars";"Avr";"Mai";"Juin";"Juil";"Août";"Sept";"Oct";"Nov";"Déc"
Ce qui donne:
Cordialement.
__________________
Questions techniques par MP
Le peu que je sais, c'est à mon ignorance que je le dois.
...............................................................................Sacha Guitry
francishop est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/02/2011, 10h24   #15
Membre régulier
 
Inscription : juin 2006
Messages : 549
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 549
Points : 98
Points : 98
ça c'est exactement ce que je souhaitais et ça marche nickel !!

la méthode de francishop marche aussi, mais je ne souhaitais pas aller autant dans les détails.

merci beaucoup

et merci aux autres aussi pour le temps passé
a+


Citation:
Envoyé par f-leb Voir le message
je bafouille mon SQL, la fatigue


essayons comme ça:
Code sql :
1
2
3
4
5
6
7
SELECT Temp.Nom,  Temp.Mois, count(*) AS total
 
FROM
(SELECT DISTINCT T1.Nom, T1.Date, T1.Mois
FROM T1) Temp
 
GROUP BY Temp.Nom, Temp.Mois;

[EDIT]
et un wagon de retard en plus, vais me coucher...
[/EDIT]
damsmut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 10h34   #16
Membre régulier
 
Inscription : juin 2006
Messages : 549
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 549
Points : 98
Points : 98
Richard et Jean-Yves, vos solution ne fonctionnent pas chez moi... pourtant ma table correspond bien à ce que j'ai mis dan mon 1er post
damsmut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 10h43   #17
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
Bonjour Damsmut,

Bizarre... j'ai testé ce SQL avec, exactement, les mêmes données que ton premier post...

Mais bon, l'essentiel est que tu sois dépanné.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 10h43   #18
Membre régulier
 
Inscription : juin 2006
Messages : 549
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 549
Points : 98
Points : 98
Richard, j'ai réussi a faire marché ton code, mais j'ai du le modifier comme ça:

Code :
1
2
3
SELECT T1.Nom , T1.Mois, Count(*) AS Compteur
FROM (SELECT DISTINCT T2.Nom, T2.Date, Month([Date]) AS Mois FROM T1 AS T2) as T1
GROUP BY T1.Nom, T1.Mois;
damsmut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 10h53   #19
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
Arrrrghh !.... le "as" de "as T1" a été une victime supplémentaire d'un copier/coller malencontreux...
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 11h00   #20
Membre régulier
 
Inscription : juin 2006
Messages : 549
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 549
Points : 98
Points : 98
et du coup j'ai bien compris maintenant comment vous avez tous fait...

et Jean Yves j'ai réussi aussi à faire marché ton code, mais après quelques modifications...


Code :
1
2
3
select table1.nom, table1.mois, count(*)  as CPT
from (SELECT DISTINCT T1.Nom,T1.Date, T1.Mois FROM T1) as table1
group by  table1.nom, table1.mois ;
damsmut 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 13h43.


 
 
 
 
Partenaires

Hébergement Web