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 10/05/2011, 16h57   #1
Membre actif
 
Homme Quentin D.
Étudiant
Inscription : avril 2011
Messages : 175
Détails du profil
Informations personnelles :
Nom : Homme Quentin D.
Âge : 25
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : avril 2011
Messages : 175
Points : 165
Points : 165
Par défaut Faire apparaitre les différences de tables avec une jointure

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 :
1
2
3
Select T1.ID, T1.Client Name, T1.Staff Name, T2.Amount, T1.Amount
From T1 Inner join T2 on T1.Client Name = T2.ClientName and T1.ID = T2.ID
Where T1.StaffName = T2.StaffName;
Vous l'aurez compris je fais une jointure entre mes 2 tables et je récupére les lignes où le nom du staff est identique.

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?
Nitromard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2011, 17h07   #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 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.
----------------------------------------------------------------------------------------------
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 10/05/2011, 17h15   #3
Membre actif
 
Homme Quentin D.
Étudiant
Inscription : avril 2011
Messages : 175
Détails du profil
Informations personnelles :
Nom : Homme Quentin D.
Âge : 25
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : avril 2011
Messages : 175
Points : 165
Points : 165
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 ^^).
Nitromard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2011, 17h21   #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
Citation:
Envoyé par Nitromard
.../... cette technique ne me permet pas une double jointure .../...
==> si, elle le permet. Passes par l'assistant graphique, et tu établis tes liaisons avec plusieurs champs (en les faisant glisser de l'un à l'autre) et en indiquant une flèche à droite (LEFT JOIN).
__________________
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 10/05/2011, 17h25   #5
Membre actif
 
Homme Quentin D.
Étudiant
Inscription : avril 2011
Messages : 175
Détails du profil
Informations personnelles :
Nom : Homme Quentin D.
Âge : 25
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : avril 2011
Messages : 175
Points : 165
Points : 165
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.
Nitromard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2011, 17h42   #6
Membre actif
 
Homme Quentin D.
Étudiant
Inscription : avril 2011
Messages : 175
Détails du profil
Informations personnelles :
Nom : Homme Quentin D.
Âge : 25
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : avril 2011
Messages : 175
Points : 165
Points : 165
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!
Nitromard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2011, 18h36   #7
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
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.
----------------------------------------------------------------------------------------------
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 11/05/2011, 09h20   #8
Membre actif
 
Homme Quentin D.
Étudiant
Inscription : avril 2011
Messages : 175
Détails du profil
Informations personnelles :
Nom : Homme Quentin D.
Âge : 25
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : avril 2011
Messages : 175
Points : 165
Points : 165
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?
Nitromard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 09h54   #9
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 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.
----------------------------------------------------------------------------------------------
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 11/05/2011, 11h02   #10
Membre actif
 
Homme Quentin D.
Étudiant
Inscription : avril 2011
Messages : 175
Détails du profil
Informations personnelles :
Nom : Homme Quentin D.
Âge : 25
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : avril 2011
Messages : 175
Points : 165
Points : 165
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 )
Nitromard 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 07h39.


 
 
 
 
Partenaires

Hébergement Web