Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
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 31/10/2011, 15h47   #1
Candidat au titre de Membre du Club
 
Homme philippe tchaidjian
salarié
Inscription : mars 2011
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme philippe tchaidjian
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : salarié
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 49
Points : 13
Points : 13
Par défaut Sélection d'une totalité dans access

Bonjour à tous

pourriez-vs m'aider à trouver une syntaxe SQL compatible avec Access pour sélectionner des enregistrements portant sur TOUS les objets d'une nature donnée et non pas seulement un au moins de ces objets.

Je m'explique :

la BdD est constituée des tables suivantes :
- la table des Client, avec leurs références,
- la table des Commandes, jointure avec CLIENT sur le champ Numéro de Client,
- la table DETAIL DES COMMANDES, jointure avec Commandes sur le champ Numéro de commande, qui indique les numéros des produits commandés et les quantités commandées par commande
- la table des PRODUIT fabriqués, jointure avec la table DETAIL DES COMMANDES sur la référence produit, qui indique aussi le libellé du produit.

Je cherche à déterminer les clients qui ont commandé (entre autres) TOUS les produits fabriqués contenant de l'ACIER. Il y a 2 référénces de produits avec de l'acier, je veux dc sélectionner les clients dt les commandes contiennent les 2 types de produits en acier, et pas seulement un des deux, avec éventuellement d'autres produits qui ne sont pas en acier.

Voici la syntaxe de la requête que j'ai rédigée, mais ça ne me donne pas le résultat attendu.

Code :
1
2
3
4
5
6
7
8
9
10
11
SELECT Ncli, Nom
FROM T_Client a
WHERE NOT EXISTS
 
(SELECT *
FROM T_Produit C
WHERE  libelle like '*acier*'
and  Npro not in (Select Npro
                              From T_Detail d, T_Commande b
                             Where D.Ncom = b.Ncom
                                         and b.Ncli = a.Ncli))
Pouvez-vs m'aider svp
Merci d'avance
pppa1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2011, 17h14   #2
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
Bonjour Pppa1,

Suggestion (via l'assistant, c'est plus clair) :

requête R1
  • Client=>Commande=>DétailCommande (FROM/LEFT JOIN) ;
  • uniquement les produit contenant "acier" (WHERE) ;
  • groupée par client, article (GROUP BY) ;
  • N°client, produit, count(*) (SELECT).
==> liste des clients ayant commandé au moins un produit "acier" avec le nombre de commande. Une ligne par client/produit.


requête R2
  • R1 (FROM) ;
  • groupée par client (GROUP BY) ;
  • N°client, count(*) (SELECT) ;
  • uniquement count(*)=2 (HAVING).
==> liste des clients qui ont commandé 2 produits "acier" différents. Une ligne par client.


requête R3
  • R2=>Commande=>DétailCommande (FROM/LEFT JOIN) ;
  • champs souhaités (SELECT).
==> liste de toutes les commandes des clients qui ont commandé 2 produits "acier" différents. Une ligne par client/commande/détail commande.
__________________
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 31/10/2011, 18h18   #3
Candidat au titre de Membre du Club
 
Homme philippe tchaidjian
salarié
Inscription : mars 2011
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme philippe tchaidjian
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : salarié
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 49
Points : 13
Points : 13
Bonjour Richard

Merci d'essayer de m'aider.
Est-ce qu'à chq résultat intermédiaire (R1 et R2) je dois constituer une vue sur laquelle la requête suivante opérera sa sélection ?

de tte façon je devrai retranscrire en SQL, mais je veux déjà bien comprendre formellement la construction, sur le fond je pense que c'est clair, enfin je verrai lorsque je testerai mon script

Merci de me dire
pppa1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2011, 23h05   #4
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
Passes par l'assistant et stockes les requêtes tel qu'indiqué dans mon précédent post. R3 analyse R2 qui, elle même, analyse R1.

Fais tourner le tout jusqu'à ce que tu obtiennes ce que tu souhaites : il sera toujours temps de s'occuper du code SQL.
__________________
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 01/11/2011, 11h04   #5
Candidat au titre de Membre du Club
 
Homme philippe tchaidjian
salarié
Inscription : mars 2011
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme philippe tchaidjian
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : salarié
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 49
Points : 13
Points : 13
Bonjour Richard

Merci pr les conseils ; je regarde et vs tiens au courant.

Qd vs mentionnez l "assistant", on parle bien de l'assistant de requêtes sous access (je n'en connais pas d'autre) ; si c'est bien ça j'ai perdu l'habitude de m'en servir, mais ça devrait revenir, sauf que je ne conçois pas clairement a priori comment on mentionne l'analyse de R1 ds l'assistant lorsqu'on traite R2 avec l'assistant, idem pr R3 avec R2...

Si vs pouviez m'en dire + à ce sujet avant que je ne tâtonne.

Merci par avance

bien cordialement
pppa1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2011, 11h10   #6
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
Bonjour Pppa1,

Citation:
Envoyé par Pppa1
.../... on parle bien de l'assistant de requêtes sous access .../...
==> oui. Cet assistant graphique est aussi appelé QBE.


Citation:
Envoyé par Pppa1
je ne conçois pas clairement a priori comment on mentionne l'analyse de R1 ds l'assistant lorsqu'on traite R2 avec l'assistant, idem pr R3 avec R2
==> les requêtes stockées sont vues comme des tables : choisir l'onglet "requête" et sélectionner les requêtes mentionnées. Le SELECT final traduira la requête en question.
__________________
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 01/11/2011, 19h27   #7
Candidat au titre de Membre du Club
 
Homme philippe tchaidjian
salarié
Inscription : mars 2011
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme philippe tchaidjian
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : salarié
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 49
Points : 13
Points : 13
Bonsoir Richard

j'ai écrit 2 requêtes R1 et R2, R2 aboutissant au résultat souhaité.
J'ai vraiment perdu l'habitude de travailler avec l'assistant, alors ce que j'ai fait, j'ai codé en sql (Cf mon code des 2 requêtes) et regardé comment l'assistant le traduit en mode création (alors que je sais que bcp font la démarche inverse, d'ailleurs c'est principalement comme ça que j'ai appris SQL pr access).

Reste un point que apparemment - si j'ai bien compris, mais dites moi - la R3ne règle pas.
Si un client commande tjs le même produit mais en plusieurs commandes séparées, comment est-ce que je peux "l'éliminer", puisqu'au final il ne soit pas être sélectionné.

Merci de me dire

R1
Code :
1
2
3
4
SELECT a.Ncli, a.Nom,  Count(*) AS NbCommande
FROM T_client AS a, T_Commande AS b, T_detail AS d, T_produit AS c
WHERE (((a.Ncli)=[b].[Ncli]) AND ((b.Ncom)=[d].[Ncom]) AND ((d.Npro)=[c].[Npro]) AND ((c.[Libelle]) Like '*acier*'))
GROUP BY a.Ncli, a.Nom
R2
Code :
1
2
3
4
SELECT NCli, Nom, Npro, Count(*)
FROM Richard_R1
GROUP BY NCli, Nom,Npro, NbCommande
HAVING NbCommande > 1
pppa1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2011, 22h38   #8
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
La requête R1 ne correspond pas du tout à celle proposée !... et pas de jointure... tu as groupé par a.Ncli, a.Nom de T_client !...

Donc reprenons, via l'assistant :
  • ajouter la table T_client (FROM) ;
  • ajouter la table T_Commande (FROM) ;
  • ajouter la table T_detail (FROM) ;
  • ajouter la table T_produit (FROM) (oubliée précédemment) ;
  • lier T_client à T_Commande via NCli avec flèche à droite (LEFT JOIN) ;
  • lier T_Commande à T_detail via NCom avec flèche à droite (LEFT JOIN) ;
  • lier T_detail à T_produit via NPro avec flèche à droite (LEFT JOIN) ;
  • grouper par NCli, NPro (GROUP BY) ;
  • champs NCli, NPro, count(*) (SELECT) ;
  • uniquement NPro contenant "acier" (WHERE).
==> sauvegarder sous R1.

Postes l'image graphique de R1 quand tu peux.
__________________
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 01/11/2011, 23h22   #9
Candidat au titre de Membre du Club
 
Homme philippe tchaidjian
salarié
Inscription : mars 2011
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme philippe tchaidjian
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : salarié
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 49
Points : 13
Points : 13
Merci pr votre persévérence.

Que faut-il faire en mode création pr qu'apparaisse la ligne opération permettant de demander un regroupement ?

Merci de me dire

Ci joint la copie de l'interface asistant là où j'en suis.

Espérant que c'est assez lisible, sinon je ferai autrement

Bien cordialement
pppa1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 12h08   #10
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
Bonjour Pppa1,

Citation:
Envoyé par Pppa1
Que faut-il faire en mode création pr qu'apparaisse la ligne opération permettant de demander un regroupement ?
==> un petit tour dans l'aide Access (très bien conçue) t'aurait donné la solution : il s'agit du bouton ∑, en haut.

Pour Count(*), sur la ligne "Opération", choisir "Expression".
Pour le champ "Libellé" de T_Produit, sur la ligne "Opération", choisir "Où" (WHERE).

Re-postes l'image quand ce sera OK.
__________________
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 02/11/2011, 14h24   #11
Candidat au titre de Membre du Club
 
Homme philippe tchaidjian
salarié
Inscription : mars 2011
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme philippe tchaidjian
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : salarié
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 49
Points : 13
Points : 13
Bonjour Richard
Hier 22h38
Citation:
grouper par NCli, NPro (GROUP BY) ;
Ce jour 12 h 08
Citation:
Pour Count(*), sur la ligne "Opération", choisir "Expression".
.

En suivant cette dernière instruction, il semble que je perde la notion de regroupement.

Sur la ligne opération, de ce que je comprends pr l'instant, c'est soit regroupement, soit expression, mais on ne pourrait pas sélectionner les deux modalités.

Merci de me dire
pppa1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 16h43   #12
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
Citation:
Envoyé par pppa1
Sur la ligne opération, de ce que je comprends pr l'instant, c'est soit regroupement, soit expression, mais on ne pourrait pas sélectionner les deux modalités.
==> sur la même ligne Opération :
Regroupement, pour les champs regroupés : NCli, NPro ;
Expression, pour le champ calculé issu du groupe : count(*).
__________________
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 02/11/2011, 17h01   #13
Candidat au titre de Membre du Club
 
Homme philippe tchaidjian
salarié
Inscription : mars 2011
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme philippe tchaidjian
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : salarié
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 49
Points : 13
Points : 13
Dc voici (PJ zippée) mon résultat pr R1 ; merci de me dire si vs etes d'accord
pppa1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 17h06   #14
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
Je ne peux pas lire les .rar.
Envoies un .zip ou l'image de la requête, comme précédemment.
__________________
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 02/11/2011, 17h30   #15
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
OK, j'ai converti ton .rar en .zip.
La requête est OK : elle te donne donc la liste des clients ayant commandé au moins un produit "acier" avec le nombre de commande (1 ligne par client/produit).

Passes à la deuxième requête R2 :
  • R1 ;
  • groupée par client ;
  • N°client, count(*) ;
  • uniquement count(*)=2.
==> liste des clients qui ont commandé 2 produits "acier" différents (1 ligne par client).
__________________
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 02/11/2011, 20h09   #16
Candidat au titre de Membre du Club
 
Homme philippe tchaidjian
salarié
Inscription : mars 2011
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme philippe tchaidjian
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : salarié
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 49
Points : 13
Points : 13
Bonsoir

voici la R2

Vs qui êtes un habitué du site, et moi qui ne suis pas un gros psoteur, je suis surpris de voir que ma zone verte lors de l'envoi de PJ se réduit comme peau de chagrin.

Y-a-t-il des règles spécifiques pour la gestion des PJ ?

Merci de me dire
pppa1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 21h48   #17
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
OK, pour le R2.
La R3 devrait te donner le résultat que tu souhaites.
__________________
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 06/11/2011, 16h14   #18
Candidat au titre de Membre du Club
 
Homme philippe tchaidjian
salarié
Inscription : mars 2011
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme philippe tchaidjian
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : salarié
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 49
Points : 13
Points : 13
Bonjour Richard

je ne comprends pas prquoi la R3 ?

La R2 donne déjà le résultat souhaité, non ?

Pr la gestion des PJ, vs ne savez pas ?

Merci de me dire
pppa1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2011, 16h50   #19
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
Bonjour Pppa1,

Citation:
Envoyé par Pppa1
La R2 donne déjà le résultat souhaité, non ?
==> oui. Dans ce cas, n'oublies pas le bouton .

Citation:
Envoyé par Pppa1
je ne comprends pas prquoi la R3 ?
==> liste de toutes les commandes des clients qui ont commandé 2 produits "acier" différents. Une ligne par client/commande/détail commande. Pas indispensable, mais peut-être intéressant.

Citation:
Envoyé par Pppa1
Pr la gestion des PJ, vs ne savez pas ?
==> voir le tableau de bord de ton profil : il faut faire le ménage de tes anciennes pièces jointes pour en ajouter d'autres.
__________________
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 06/11/2011, 17h48   #20
Candidat au titre de Membre du Club
 
Homme philippe tchaidjian
salarié
Inscription : mars 2011
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme philippe tchaidjian
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : salarié
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 49
Points : 13
Points : 13
MERCI BCP
pppa1 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 10h12.


 
 
 
 
Partenaires

Hébergement Web