Requete SQL Access : Correspondance entre 2 table [Résolu]

Barbados16 5 Messages postés mercredi 28 juin 2006Date d'inscription 18 mai 2010 Dernière intervention - 18 févr. 2010 à 18:29 - Dernière réponse : Barbados16 5 Messages postés mercredi 28 juin 2006Date d'inscription 18 mai 2010 Dernière intervention
- 25 févr. 2010 à 10:51
Bonjour à tous,

je suis novice en SQL et j'essaye d'adapter une application ACCESS. Je vous explique ce que je veux faire et où je coince.

Je dispose d'une table "dictionnaire" qui contient une liste exhaustive de correspondance entre des données

exple :
Table "Dictionnaire"
Colonne A - Colonne B
1 X
2 X
3 ZZ

Sur une autre table "Documents", je dispose également de la colonne A qui contient des valeurs, et de la colonne B qui est vide.

Ce que je veux faire : Compléter la colonne B en fonction des valeurs de ma colonne A (en utilisant pour référence ma table "dictionnaire")

Table "Documents"
Colonne A - Colonne B
1 vide (mettre "X")
3 vide (mettre "ZZ")


Ce que j'ai fait :

INSERT INTO Documents ( Colonne B )
SELECT dictionnaire.[Colonne B]
FROM documents, dictionnaire
WHERE ((dictionnaire.colonne A=documents.Colonne A));


Et ça ne marche pas, j'ai bricolé tout l'aprem mais rien ne fonctionne, où est l'erreur ? ... merci de vos lumières / conseils ...
J'espère avoir été à peu près clair dans mes explications ...
Afficher la suite 

4 réponses

Répondre au sujet
tpoinsot 345 Messages postés mardi 1 juin 2004Date d'inscription 17 octobre 2014 Dernière intervention - 22 févr. 2010 à 08:31
+3
Utile
Quand tu décris un lien entre 2 tables, tu fais
soit ... t1, t2 where t1.champ1 = t2.champ2
soit ... t1 inner join t2 on t1.champ1 = t2.champ2

le principe est de sélectionner des données et d'effectuer des modifications sur le contenu des champs d'une rangée, de manière systématique.

Ca ressemble donc à
UPDATE table SET champ1 = valeur
à la fin toute la colonne champ1 contient valeur.

valeur peut se référer à d'autres colonnes de la même rangée.

J'ai l'impression que tu confonds l'insertion de rangée et l'insertion de valeur.

thip
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de tpoinsot
tpoinsot 345 Messages postés mardi 1 juin 2004Date d'inscription 17 octobre 2014 Dernière intervention - 19 févr. 2010 à 13:40
0
Utile
Bonjour,

Insert : c'est pour ajouter des enregistrements.

Pour faire ce que tu veux, c'est "Update" qu'il faut utiliser

Avec Access, crée une requête "sélection", vérifie le résultat, transforme-la en "mise à jour" et ajoute les valeurs de modif.

en gros, c'est :
update doc, dict where doc.A = dict.A and doc.B is null
set doc.B = dict.B

On préfèrera "inner join" à ce "where"

thip
Commenter la réponse de tpoinsot
Barbados16 5 Messages postés mercredi 28 juin 2006Date d'inscription 18 mai 2010 Dernière intervention - 19 févr. 2010 à 16:16
0
Utile
Merci pour ta réponse, mais j'ai un message d'erreur sur la syntaxe de UPDATE (Syntax error in UPDATE statment)

UPDATE Documents,dictionnaire
INNERJOIN  [dictionnaire].[code_uns] = [documents].[unspsc] AND [documents].[spend_cat_d] is null
SET [documents].[spend_cat_d]=[dictionnaire].[Spend Cat]


Pour la compréhension par rapport à mon exple:
A unspsc code_uns
B Spend Cat spend_cat_d

Pour ma culture : J'ai à peu près compris l'idée, juste le SET à la fin, à quoi sert-il ?

Merci.
Commenter la réponse de Barbados16
Barbados16 5 Messages postés mercredi 28 juin 2006Date d'inscription 18 mai 2010 Dernière intervention - 25 févr. 2010 à 10:51
0
Utile
Tu as sans doute raison, je dois mélanger ces notions. J'avoue ne pas avoir tout compris du 1er coup, mais après plusieurs essais, c'est plus clair, et en plus ça marche !!

Merci pour ton aide.
Commenter la réponse de Barbados16

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.