Requête Access sans doublons [Résolu]

Signaler
-
Messages postés
19
Date d'inscription
dimanche 1 novembre 2020
Statut
Membre
Dernière intervention
27 décembre 2020
-
Bonjour,
J ai les table clients, commandes et détail_com qui sont liées. J ai crée un formulaire qui regroupe tous les champs de la table clients et la clé étrangère fkey_idclient qui se trouve dans la table détail_com, et un sous formulaires qui regroupe les champs des tables commande et détail_com. Mais lorsque je parcours les enregistrements j ai des clients qui passe a plusieurs reprises. Svp aider moi



Configuration: Android / Chrome 70.0.3538.110

3 réponses

Messages postés
16045
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 juin 2021
867
bonjour,
peux-tu,
soit partager ton fichier,
soit partager les sources SQL de tes requêtes, en t'assurant qu'il soit clair à quelle table appartient chaque champ

quand tu écris "je parcours les enregistrements", s'agit-il du formulaire ou du sous-formulaire?
Messages postés
19
Date d'inscription
dimanche 1 novembre 2020
Statut
Membre
Dernière intervention
27 décembre 2020

voici le code sql de la requete source du sous formulaire :

SELECT DISTINCT clients.nom, clients.prenom, clients.civilité, commandes.id_com, commandes.fkey_idclient, commandes.date_com, detaille_com.det_num, detaille_com.fkey_idCom, detaille_com.fkey_refProd, detaille_com.Det_qte, detaille_com.statut_com, detaille_com.liv_com, produits.designation, produits.pu, produits.poids, produits.stock, [Det_qte]*[pu] AS montant
FROM (clients INNER JOIN commandes ON clients.id_client = commandes.fkey_idclient) INNER JOIN (produits INNER JOIN detaille_com ON produits.Ref_prod = detaille_com.fkey_refProd) ON commandes.id_com = detaille_com.fkey_idCom;

et celle du formulaire :

SELECT DISTINCT clients.id_client, clients.nom, clients.prenom, clients.civilité, clients.ncnib, clients.tel, clients.adresse, commandes.fkey_idclient, commandes.id_com
FROM produits INNER JOIN ((clients INNER JOIN commandes ON clients.id_client = commandes.fkey_idclient) INNER JOIN detaille_com ON commandes.id_com = detaille_com.fkey_idCom) ON produits.Ref_prod = detaille_com.fkey_refProd
GROUP BY clients.id_client, clients.nom, clients.prenom, clients.civilité, clients.ncnib, clients.tel, clients.adresse, commandes.fkey_idclient, commandes.id_com;
Messages postés
16045
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 juin 2021
867
si tu utilises les requêtes hors (sous-)formulaire, as-tu le même soucis "clients qui passe a plusieurs reprises"?

DISTINCT est souvent utilisé pour cacher des défauts dans la conception de la base de données ou des requêtes.

tu écris "un formulaire qui regroupe tous les champs de la table clients et la clé étrangère fkey_idclient".
- la clé étrangère est-elle en lien avec le champ clients.id_client? si oui, pourquoi l'ajouter dans la requête?
- pourquoi as-tu ajouté commandes.id_com dans le SELECT du formulaire?

je me demande si ceci n'est pas suffisant pour le formulaire:
SELECT clients.id_client, clients.nom, clients.prenom, clients.civilité, 
       clients.ncnib, clients.tel, clients.adresse
FROM clients
Messages postés
19
Date d'inscription
dimanche 1 novembre 2020
Statut
Membre
Dernière intervention
27 décembre 2020

Salut ! j ai trouver une solution qui marche bien. Merci