|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : septembre 2008 Messages : 35 ![]() |
Bonjour,
voilà, j'explique mon problème, je n'arrive pas à trouver la requete qui me permetterais la sélection suivante : J'ai 2 tables A et B. Dans A et B j'ai 2 champs identiques on va dire champ1 et champ2 Ma requete est la suivante : Code :
Ex : A Champ 1 Champ 2 ab cd ac de de df B Champ 1 Champ 2 ab cd ac de dg df Mon résultat devrait être : de df Le problème c'est que ma requete me renvoi bien autre chose Merci d'avance
|
||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : septembre 2003 Messages : 4 300 ![]() |
bjr,
c'est normal, tu demande les couples de lignes de A et B qui sont différentes il y a donc 6 combinaisons différentes il faut joindre les tables sur un champ commun, puis filtrer les lignes dont champ1 et champ2 sont égaux il faut donc obligatoirement une clé commune entre les deux tables, sinon le SQL ne sait pas quelle ligne de A est à comparer avec quelle ligne de B
__________________
Assistant de création/modification de rubans Office Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL Blog Office Mon Site DVP |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : septembre 2008 Messages : 35 ![]() |
Les clés primaires pour les 2 tables sont ce couple justement.
|
|
|
00
|
|
|
#4 | ||
![]() ![]() Yves Développeur informatique Inscription : janvier 2007 Messages : 3 878 ![]() |
Pas sur que ce soit possible tel que tu veux le faire.
Ta raquette donne le résultat suivant : Pour chacune des lignes de A, je renvoie autant de lignes de résultat que j'obtiens de ligne dans B respectant la condition. Donc en gros, tu va renvoyer la table A complète sous forme d'une quantité importante de doublons, puisque chacune des lignes de A aura probablement une ou plusieurs ligne dans B qui respecte la condition. Essaye plutôt ceci : Code :
__________________
Sevyc64 --- Le partage est notre force NON AU LANGAGE SMS & FAUTES VOLONTAIRES SUR LES FORUMS |
||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : septembre 2008 Messages : 35 ![]() |
J'aurais pu utiliser l'ensemble EXCEPT, mais ce n'est pas géré dans ACCESS :
select champ1,champ2 from A EXCEPT SELECT A.champ1, A.champ2 FROM A inner JOIN B on (A.champ1=B.champ1 and A.champ2=B.champ2) Mais bon j'ai des doutes au niveau performance sur cette requete. |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : septembre 2008 Messages : 35 ![]() |
La syntaxe exacte est la suivante (il manquait un S à EXIST) :
Code : SELECT A.Champ1, A.Champ2 FROM A WHERE NOT EXISTS ( SELECT * FROM B WHERE A.champ1=B.champ1 and A.champ2=B.champ2) Merci bien pour votre aide ![]() Résolu |
|
|
00
|
|
|
#7 | ||
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour,
Je me permets de m'immiscer... Cette requête donne le résultat escompté (via l'assistant, c'est plus clair). Sinon, en SQL, cela donne (généré par l'assistant) : Code sql :
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com