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 08/11/2011, 12h14   #1
Membre du Club
 
bonero pross
Inscription : janvier 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : bonero pross

Informations forums :
Inscription : janvier 2010
Messages : 160
Points : 58
Points : 58
Par défaut Probleme de Jointure:

Bonjour tout le monde,

Je tourne en rond sur un petit probleme.
Jai deux tables : MasterTable et ExceptionTable.
Je veux selectionner tous les enregistrements de la table MasterTable sauf ceux pour lesquels il existe un nom dans la table ExceptionTable.



ExceptionTable
NameET AgeET SalaryET
Herve 30 119
jerome 23 108




MasterTable
Name Age Salary
Alain 12 110
Bonero 28 125
Jacques 20 150
Herve 30 119
jerome 23 108




En gros je veux exclure Herve et Jerome.

Quand j’utilise la requete suivante, les results sont surprenants. Les “bons” resultats se dedoublent et les enregistrements non desires(herve et jerome) sont egalement selectionnes.


Code :
1
2
3
SELECT MasterTable.*
FROM MasterTable, ExceptionTable
WHERE (((MasterTable.Name)<>[ExceptionTable].[NameET]));

Exists_Query
Name Age Salary
Alain 12 110
Alain 12 110
Bonero 28 125
Bonero 28 125
Jacques 20 150
Jacques 20 150
Herve 30 119
jerome 23 108




Merci de votre aide et excusez moi pour le manque de mise en forme des tables.

Bonero.
Bonero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 15h18   #2
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 182
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 182
Points : 2 812
Points : 2 812
Bonjour Bonero,

Dans un premier temps, je te suggère d'utiliser l'assistant graphique pour la création de tes requêtes (QBE).

Ensuite, deux choses :
  • l'utilisation des jointures résoudra ton problème ;
  • il n'est pas conseillé d'établir des liens entre deux tables via un champ qui peut être modifié :
    • s'il est modifié dans une table, il ne le sera pas dans l'autre ;
    • tu auras des soucis en cas de noms identiques.
    ==> une clé auto incrémentée ferait l'affaire, dans MasterTable.
__________________
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 actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 16h55   #3
Membre du Club
 
bonero pross
Inscription : janvier 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : bonero pross

Informations forums :
Inscription : janvier 2010
Messages : 160
Points : 58
Points : 58
merci Richard pour tes conseils.
j' ai poste cet exemple juste pour resumer mon probleme.

j'ai fait quelques recherches sur le net et je suis tombe sur l'usage de la fonction EXISTS qui semble resoudre mon probleme.
mais je dois avouer que j'ai vraiment du mal a apprehender le fonctionnement de cette fonction( EXISTS ) et surtout je ne comprends pas pourquoi mon premier code ne marche pas . ils(les deux codes) semblent pourtant dire la meme chose.


Code :
1
2
3
4
5
6
7
Select *
From MasterTable 
Where NOT Exists 
(Select * 
From ExceptionTable 
Where ExceptionTable.NameET= MasterTable.Name
)
Bonero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 17h12   #4
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 182
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 182
Points : 2 812
Points : 2 812
MasterTable
Code :
1
2
3
4
5
6
Name	Age	Salary
Alain	12	110
Bonero	28	125
Jacques	20	150
Herve	30	119
jerome	23	108
ExceptionTable
Code :
1
2
3
NameET	AgeET	SalaryET
Herve	30	119
jerome	23	108
Citation:
Envoyé par Bonero
En gros je veux exclure Herve et Jerome.
==> tu te compliques la vie... pour un problème très simple résolu par une requête de non-correspondance. Encore une fois, passes par l'assistant "requête de non-correspondance", c'est très clair.
__________________
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 actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 17h37   #5
Membre du Club
 
bonero pross
Inscription : janvier 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : bonero pross

Informations forums :
Inscription : janvier 2010
Messages : 160
Points : 58
Points : 58
Bonjour Richard,

Merci pour ta reponse. Tu as tout a fait raison lorsque tu m’as suggere d’utiliser la requete de non-corresponde. Mais mes recherches m’ont permis de decouvrir le predicat EXISTS et UNIQUE.


Cordiallement.

Bonero
Bonero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 18h38   #6
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 182
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 182
Points : 2 812
Points : 2 812
N'oublies pas le flag .
__________________
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 actuellement 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 14h22.


 
 
 
 
Partenaires

Hébergement Web