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 06/06/2011, 15h13   #1
Nouveau Membre du Club
 
Homme
ingénieur essais électronique
Inscription : mai 2011
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : ingénieur essais électronique
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 128
Points : 37
Points : 37
Par défaut Requete sans doublon

Bonjour,

J'ai une base avec deux tables via odbc. Ces deux tables ont chacune un champ référence et un champ désignation. Cependant, le champ référence possède des doublons entre les deux tables et à l'intérieur d'une des deux tables, il y a aussi des doublons (issue des reférénces).

Je voudrait réaliser une requete pour récupérer un tableau sans aucun doublon avec la référence unique et la désignation jointe (de l'une ou de l'autre table dans le cas des doublons).

Ceci me permettra de réutilisée cette requete dans une liste modifiable.

Merci
sylv20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2011, 15h35   #2
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 Sylv20,

Si j'ai bien compris, une des deux tables est sans doublon (1 ligne par référence) et l'autre contient des doublons (plusieurs lignes pour une même référence). C'est bien cela ?
__________________
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/06/2011, 15h56   #3
Nouveau Membre du Club
 
Homme
ingénieur essais électronique
Inscription : mai 2011
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : ingénieur essais électronique
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 128
Points : 37
Points : 37
Donc oui c'est à peut pret ca.

On va les appeler table 1 et table 2

table 1 (sans doublon du champs référence).
champs :
reference (clé primaire indéxé sans doublon)
designation (non indéxé)

table 2 (avec doublon sur le champs reférence)
champs :
ID (clé primaire indéxé sans doublon)
reférence (non indéxé avec doublon) car il y a plusieurs issue pour uen reference
designation (non indéxé)
issues (non indéxé)

Pour le moment, j'utilise la fonction UNION qui enlève tous les doublons de ma colonne reférence entre les deux tables. Mais je n'arrive pas a récupérer la colonne désignation de l'une ou de l'autre table.


Donc j'aimerais dans une requete récupérer :

le champs ref unique pour chaque reference (indéxé sans doublon)
le champs désignation (non indéxé) de l'une ou de l'autre table
sylv20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2011, 16h03   #4
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
Toutes les références de Table1 sont-elles, forcément, dans Table2 ?
__________________
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/06/2011, 17h34   #5
Nouveau Membre du Club
 
Homme
ingénieur essais électronique
Inscription : mai 2011
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : ingénieur essais électronique
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 128
Points : 37
Points : 37
Non.

Certaines ref de table 1 ne sont dans table 2 et vice versa.
sylv20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2011, 17h44   #6
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
OK.

Si une même référence est dans Table1 et dans Table2, la désignation est-elle, forcément, la même ?
__________________
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/06/2011, 20h47   #7
Nouveau Membre du Club
 
Homme
ingénieur essais électronique
Inscription : mai 2011
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : ingénieur essais électronique
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 128
Points : 37
Points : 37
Et bien non. En fait les deux tables sont renseignées par des services différents, la référence peut être identique avec des désignations différentes (ex : manocontact dans une table et manocontact 5bars dans une autre, l'idée reste la même).

Je n'ai pas de contrainte à prendre telle ou telle désignation.

Ps : dans une même table (table 2), il y a plusieurs fois la même référence (issue différente) et les désignations sont différentes aussi (cependant, c'est la même idée que precedemment au sujet des manocontacts).

L'idée principale c'est la référence, je veux qua la liste déroulante laisse apparaitre la ref et la désignation (sur saisie de reference) mais le champs sera remplie uniquement par reference. La désignation sera juste un indice pour l'utilisateur (qu'il ne se trompe pas) lors de la sasie de la referenece.

J'espere que je suis clair.
sylv20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 10h55   #8
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 Sylv20,

Intéressant...

Suggestion :
- créer une requête R1 union de Table1 et Table2 ==> tous les enregistrements ;
- créer une requête R2 qui analyse R1, groupée par "reference", avec Premier de "designation" ==> 1 ligne par référence avec la première désignation trouvée.
__________________
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 10
Vieux 07/06/2011, 13h56   #9
Nouveau Membre du Club
 
Homme
ingénieur essais électronique
Inscription : mai 2011
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : ingénieur essais électronique
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 128
Points : 37
Points : 37
Ahhhhh, merci beaucoup.

C'était simple en fait mais je ne connaissais pas cette histoire de regroupement.

Donc au final, j'ai une requete sur chaque table qui recupere la ref et la designation ensuite une union entre les deux et pour finir une derniere requete qui regroupe les refs ensemble et prend la dernière designation (plutôt que la première comme dans ta réponse).

Ma dernière requete (reference en regroupement et désignation la dernière) prend donc a chaque référence la dernière désignation disponible (en l'occurrence celle de la table 2 car j'ai fait table 1 union table 2) ?

Le regroupement supprime les doublons c'est ca ???

Question subsidière :

Si tu n'a pas de réponse c'est pas grave, le principal est fait.

Dans les tables 1 et 2 :

une référence dans la table 1 possède une désignation.
la même référence dans la table 2 ne possède pas de désignation.
(et bien sure vice versa)

Dans ma requête finale, il me prend la désignation de la table 2 (celle ou il n'y a pas de désignation). Du coup la désignation est vide alors qu'elle existe dans la table 1.
Je voudrais si possible la désignation lorsqu'elle est présente dans l'une ou l'autre tables sinon ca reste vide si ni dans l'une ni dans l'autre la désignation n'est présente.
sylv20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 14h25   #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
Citation:
Envoyé par Sylv20
.../... prend la dernière designation (plutôt que la première comme dans ta réponse).
==> peu importe, en fait, puisqu'il faut que tu en prennes une.


Citation:
Envoyé par Sylv20
Le regroupement supprime les doublons c'est ca ???
==> oui, entre autre (∑, dans l'assistant) : il permet, également, de bénéficier de fonctions propres au groupe (min(), max(), first(), etc...)


Citation:
Envoyé par Sylv20
Je voudrais si possible la désignation lorsqu'elle est présente dans l'une ou l'autre tables sinon ca reste vide si ni dans l'une ni dans l'autre la désignation n'est présente.
==> il suffit de trier ta requête en ordre décroissant, et de prendre la première désignation (ou en ordre croissant, et de prendre la dernière).
__________________
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 07/06/2011, 16h12   #11
Nouveau Membre du Club
 
Homme
ingénieur essais électronique
Inscription : mai 2011
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : ingénieur essais électronique
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 128
Points : 37
Points : 37
Bon j'ai essayé plein de formule et d'ordre différent mais ca ne marche pas.

Voila en détail :

requete sur la table 1 (ess1_3) :
Code :
1
2
SELECT dbo_Ref.Ref, dbo_Ref.Designation
FROM dbo_Ref;
cette requete ne me sélectionne que les deux premières colonnes (référence + désignation) de ma table d'origine qui en compte 10.

requete sur la table 2 (ess2_3):
Code :
1
2
SELECT dbo_Art_emcl_DBF.NOMART, dbo_Art_emcl_DBF.DESCRIPT
FROM dbo_Art_emcl_DBF;
cette requete ne me sélectionne que les deux colonnes qui m'interesse (référence + désignation) de ma table d'origine qui en compte 9.


Ensuite, je fais une union qui trie par désignation en ordre croissant (req1_3):
Code :
1
2
3
SELECT * from [ess1_3]
UNION ALL SELECT * from [ess2_3]
ORDER BY Designation;
Cette requete me donne l'union de tous les enregistrements et ceux ci trié par leur désignation (ex : une reference sans désignation est en début de requete et la même référence avec une désignation est en fin de requete).

Ensuite je fais un regroupement sur la référence et prendre la dernière désignation (car ordre croissant dans ma requete union) (req1_3_fin):
Code :
1
2
3
SELECT req1_3.Ref, Last(req1_3.Designation) AS DernierDeDesignation
FROM req1_3
GROUP BY req1_3.Ref;
Et il me sort la bonne référence mais avec la première désignation (soit une case vide).

PS : des fois la table 1 a la désignation et la table 2 n'a pas la désignation mais des fois c'est l'inverse, c'est la table 1 qui n'a pas la désignation et c'est la table 2 qui a la désignation.
Je voudrais qu'il me sorte toujours celle qui a la désignation. Ou s'il n'y a pas de désignation dans ausune des deux tables et bien le champs restera vide.
sylv20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 16h39   #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
Supprimes "ALL" de "UNION ALL".
Et utilises les balises "codes" ==> #, en haut.
__________________
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 07/06/2011, 17h38   #13
Nouveau Membre du Club
 
Homme
ingénieur essais électronique
Inscription : mai 2011
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : ingénieur essais électronique
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 128
Points : 37
Points : 37
Merci pour tout. Ca fonctionne parfaitement. Une fois dans la liste modifiable ca fait bien pro.

Finalement à un mot près le résultat est complètement différent.

Encore merci.
sylv20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 17h45   #14
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
Citation:
Envoyé par Sylv20
Finalement à un mot près le résultat est complètement différent.
==> c'est souvent le cas... et pas seulement en informatique...
__________________
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
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h02.


 
 
 
 
Partenaires

Hébergement Web