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 01/06/2011, 22h41   #1
Futur Membre du Club
 
Inscription : janvier 2008
Messages : 304
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 304
Points : 18
Points : 18
Par défaut Comment comparer ou rechercher la valeur d'un champ dans deux tables et même base ? possible ?

Bonjour,

Après plusieurs recherches infructueuses, je souhaiterais savoir comment faire simplement pour comparer ou rechercher les valeurs de mon champ C table A si ils sont présents dans la Table B champ B, en gros je dois comparer une à une chaque ligne (800 lignes) et si la réf de ma colonne C retrouve les mêmes réferences dans l'autre table alors dans un autre champs à l'aide d'une requette mettre la lettre P (pour présent
) à chaque ligne.

Pouvez vous me montrer avec un exemple simple explicite comment faire faut-il lier les tables ?? etc... la requête à créer la condition à faire ? ou autre car je bloque MERCI pour votre aide...
Debutant10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2011, 09h23   #2
Membre Expert
 
Inscription : août 2006
Messages : 1 435
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 435
Points : 1 753
Points : 1 753
Bonjour,
ce devrait être
Code :
1
2
 
UPDATE TableA INNER JOIN TableB ON TableA.c = TableB.b SET TableA.present = "P";
le champ present de TableA est marqué P si TableA.c = TableB.b
helas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2011, 12h49   #3
Futur Membre du Club
 
Inscription : janvier 2008
Messages : 304
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 304
Points : 18
Points : 18
Tout d'abord merci à vous Helas pour votre aide mais cependant : la requête fonctionne qu'une seule fois je m'explique lorsque je lance la requête la lettre p s'affiche très bien dans la colonne "p" si elle trouve la réf identique OK, par contre lorsque je fais une modif d'un réf dans la table la lettre p reste toujours figée je suis obligé de supprimer manuellement les réf une à une puis relancer la requête est ensuite la mise à jour ce fait. Je pense qu'il faudrait inclure une mise à jour delete toute les réf champ "p" puis relancer la requête update ? au lieu de le faire manuellement y-a-t-il une solution bcp plus simple car cela fonctionne pas quand je modifie la réf d'un champs c le p reste toujour même après relance de la requête update.
Deplus est -il possible de mettre 'NP" pour réf non présente, je sais pas faire. Je bloque, merci pour votre aide
Debutant10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2011, 15h25   #4
Membre confirmé
 
Homme
Développeur amateur
Inscription : mars 2009
Messages : 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Maroc

Informations professionnelles :
Activité : Développeur amateur

Informations forums :
Inscription : mars 2009
Messages : 176
Points : 255
Points : 255
Bonjour,
il faut utiliser une jointure droite de la table A vers la table B et determiner le statut de presence par la fontion iif.
*
Code :
UPDATE TableA LEFT JOIN TableB ON TableA.c = TableB.b SET TableA.present =iif( TableB.b is null; "NP";"P") ;
cordialement
reedy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2011, 19h40   #5
Futur Membre du Club
 
Inscription : janvier 2008
Messages : 304
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 304
Points : 18
Points : 18
1-/ Merci pour votre réponse, mais il y a une erreur de syntaxe dans l'expression ( message access).

2-/ Est-il possible d'avoir la mise à jour automatiquement au lieu de supprimer tout les champs à la main.

Merci pour votre aide.
Debutant10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2011, 23h14   #6
Membre confirmé
 
Homme
Développeur amateur
Inscription : mars 2009
Messages : 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Maroc

Informations professionnelles :
Activité : Développeur amateur

Informations forums :
Inscription : mars 2009
Messages : 176
Points : 255
Points : 255
Salut,

Correction faite. L'erreur provenait du point virgule que j'ai remplacé par virgule


Code :
UPDATE TableA LEFT JOIN TableB ON TableA.c = TableB.b SET TableA.present =iif( TableB.b is null, "NP","P");
Concernant ta deuxième question, la réponse est OUI. Chaque fois que la requête est exécutée, le statut de présence est recalculé pour l'ensemble des individus de la table A.

Cordialement
reedy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 17h05   #7
Membre Expert
 
Inscription : août 2006
Messages : 1 435
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 435
Points : 1 753
Points : 1 753
On peut effacer le champ "présent" avant de lancer la requete
Code :
1
2
 
UPDATE TableA SET TableA.present = Null;
helas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 20h07   #8
Futur Membre du Club
 
Inscription : janvier 2008
Messages : 304
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 304
Points : 18
Points : 18
bonjour,

Comment faire pour faire les deux en une seule requête sans lancer les deux à chaque fois ?
Car je vais mettre un bonton de commande pour les mises à jour

Merci pour votre aide
Debutant10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 18h33   #9
Futur Membre du Club
 
Inscription : mai 2006
Messages : 17
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 17
Points : 16
Points : 16
Bonjour,
Je ne sais pas si l'on peut intégrer les 2 requête en une seules, en revanche tu peux créer un bouton qui va lancer les 2 requêtes succéssivement.
Tu peux faire cela en créant une macro qui contient 2 lignes "Exécuter SQL" puis appeler cette macro quand tu cré le bouton.
Autre solution : tu crée un bouton qui lance une requête, puis tu modifies le code VBA pour ajouter la deuxième requête.
tom@tom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 23h24   #10
Membre confirmé
 
Homme
Développeur amateur
Inscription : mars 2009
Messages : 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Maroc

Informations professionnelles :
Activité : Développeur amateur

Informations forums :
Inscription : mars 2009
Messages : 176
Points : 255
Points : 255
Bonjour,
Au cas où je me serais fait mal comprendre: le sql que j'ai donné dans mon précédent post est suffisant à lui tout seul. Vous n'avez pas besoin de le faire préceder par celui qui permet de vider le champ " présence ".
Essayez le et vous verrez

cordialement
reedy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h12.


 
 
 
 
Partenaires

Hébergement Web