|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre actif
![]() Quentin D.Étudiant Inscription : avril 2011 Messages : 175 ![]() |
Bonjour à tous,
J'ai 2 tables(T1 et T2) ayant les mm champs : ID, Client Name, Staff Name et Amount. L'ID identifie le Client Name, je n'ai donc rien a faire sur ces champs. J'aimerais récupérer dans une nouvelle table les champs : ID, Client Name, Staff Name, T1.Amount, T2.Amount. Pour cela je dois faire une requête : Code :
Voici mon problème : J'ai certains noms associés à des ID qui apparaissent dans une table mais pas dans l'autre, c'est-à-dire par exemple : T1 : 1, Client1, Staff1, valeur1 1, Client1, Staff2, valeur2 1, Client1, Staff3, valeur3 2, Client2, Staff1, valeur4 T2 : 1, Client1, Staff2,valeur5 1, Client1, Staff3,valeur6 2, Client2, Staff1,valeur7 Et en fait j'ai cela avec ma requête : 1, Client1, Staff2, valeur2, valeur5 1, Cleint1, Staff3, valeur3, valeur6 2, Client2, Staff1, valeur4, valeur7 Et je voudrais pouvoir faire apparaitre : 1, Client1, Staff1, valeur1, vide (ou 0) Comment puis-je faire cela? |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour Nitromard,
Remplace par Mais, c'est mieux de passer par l'assistant, de construire ta requête de manière graphique, et de comprendre les propriétés des liaisons. Un assistant "requête de non-correspondance" te sera, également, précieux.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#3 |
|
Membre actif
![]() Quentin D.Étudiant Inscription : avril 2011 Messages : 175 ![]() |
Bonjour Richard,
J'ai déjà testé les différents LEFT et RIGHT Join sans différences de résultats... De plus, cette technique ne me permet pas une double jointure comme le ferais un FULL, car si j'ai des Staff qui n'apparaissent que dans T1, je peux également avoir le contraire et je voudrais qu'ils apparaissent aussi. Je vais jeter un oeil à un assistant Requête de non-correspondance(même si cela ne me dit rien ^^). |
|
|
00
|
|
|
#4 | |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Citation:
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
|
00
|
|
|
#5 |
|
Membre actif
![]() Quentin D.Étudiant Inscription : avril 2011 Messages : 175 ![]() |
J'ai peut être oubli de le préciser, mais dans mon exemple, le résultat final doit être une combinaison de celle déjà mentionnée et celle qui m'ajoutera les éléments appratenant qu'à une table.
Voilà donc ce que je voudrais faire apparaitre : 1, Client1, Staff1, valeur1, vide (ou 0) 1, Client1, Staff2, valeur2, valeur5 1, Cleint1, Staff3, valeur3, valeur6 2, Client2, Staff1, valeur4, valeur7 Je vais tester avec l'assistant. |
|
|
00
|
|
|
#6 |
|
Membre actif
![]() Quentin D.Étudiant Inscription : avril 2011 Messages : 175 ![]() |
Bon, avec l'assistant j'ai pu refaire ma requête en mettant mes 3 premiers champs en LEFT JOIN, j'obtiens ainsi le même résultat que ma requête précédemment mentionné... Mais à partir de là je ne sais pas quoi faire pour y incorporer en plus les éléments qui n'apparaissent que dans l'une des tables...
Je vais encore essayer un peu et je reprendrais demain... En tout cas merci pour votre conseil. (et si vous avez un indice je suis preneur ^^) Bonne soirée! |
|
|
00
|
|
|
#7 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
En 3 minutes, j'ai utilisé l'assistant avec tes données, j'obtiens bien :
1 Client1 Staff1 valeur1 1 Client1 Staff2 valeur2 valeur5 1 Client1 Staff3 valeur3 valeur6 2 Client2 Staff1 valeur4 valeur7
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#8 |
|
Membre actif
![]() Quentin D.Étudiant Inscription : avril 2011 Messages : 175 ![]() |
Bonjour Richard,
Au temps pour moi, j'avais bien fait une LEFT JOIN comme tu me l'avais dis, je viens de tester avec une RIGHT JOIN et cela m'a donné les valeurs que je recherchais. Donc j'ai juste fais une petite erreur, merci. Mais par contre ce que j'aimerais faire c'est le LEFT et le RIGHT en mm temps, c'est-à-dire donner le même résultat que j'ai actuellement mm si j'inverse ma jointure avec T1 et T2. Comment puis-je faire cela? |
|
|
00
|
|
|
#9 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 176 ![]() |
Bonjour Nitromard,
C'est la table primaire qui prime (la 1ère du FROM) : c'est elle qui décide de la non-correspondance. Le sens de la jointure est en fonction. Dans ton cas, seule T1 contient un enregistrement non existant dans T2. Mettre T1 en premier, T2 en second et joindre avec une flèche à droite te donnera T2.ID=Null. Tu demandes à Access de te trouver les enregistrements de T1 non existants dans T2. Si tu inverses, avec la même jointure, tu demandes à Access de te trouver les enregistrements de T2 non existants dans T1... Encore une fois, passes par l'assistant graphique : c'est très clair. Tu peux aussi jeter un coup d'oeil sur ce lien (que je viens de copier d'un post de Fabien).
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#10 |
|
Membre actif
![]() Quentin D.Étudiant Inscription : avril 2011 Messages : 175 ![]() |
C'est bon j'ai réussit ^^, merci encore pour votre aide, vous m'avez éclairé sur les jointures ^^.
Bonne continuation. (Petit site pour la jointure Full sur access, mais sans champ vide : http://www.databasejournal.com/featu...oft-Access.htm ) |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com