Bonjour tout le monde,
Je rencontre à nouveau un problème pour la création d'une requête sql de mise à jour. J'ai étudié différents tutoriels ou cours sur le net mais il doit y avoir quelque chose qui m'échappe: impossible de faire fonctionner ma requête. Peut être que je cherche trop compliqué ou qu'il est impossible de faire ce que je souhaite.
Pour l'explication, avec l'aide de membres de developpez.net, j'ai mis en place un système d'import de fichier excel dans une table temporaire de ma base Access. Ensuite je mets à jour ma table correspondante... pour cela tout fonctionne. Ce que je souhaiterai faire par la suite c'est mettre à jour deux champs bien spécifiques: Code_sign et Code_camp de ma table T_Inscription en relation avec trois autres tables: T_Campagnes, T_Signataires et T_Import. Voici les différents champs des différentes tables concernées:
T_Import
Nom_sign
Prenom_sign
Adresse
NPA
...
Nom_camp
T_Signataires
Code_sign
Nom_sign
Prenom_sign
Adresse
....
T_Campagnes
Code_campagne
Nom_camp
T_Inscription
Code_sign
Code_camp
Ca me parait un peu compliqué mais je vais essayé d'être le plus clair possible. Nom_campagne de la table T_import signifie que Nom_sign de cette même table s'est inscrit pour cette campagne. On part du principe que la mise a jour a déjà été effectuée de T_Import vers T_Signataires donc si un signataire n'existait pas dans la table T_Signataires, l'entrée a été crée. Il faudrait donc que ma requête mette à jour dans la table T_Inscription le Code_sign et le Code_camp en sachant que dans la table T_Import je n'ai pas le Code_sign, que dans la table T_Signataires je n'ai pas le Nom_camp. En résumé, il faudrait que depuis la table T_Signataires, on recupère le Code_sign, Nom_sign et Prenom_sign, que l'on vérifie avec le Nom_sign et Prenom_sign de la table T_Import quel Nom_camp le Code_sign s'est inscrit, retrouver le Code_camp correspondant au Nom_camp et Mettre à jour Code_camp et Code_sign dans la table T_Inscription.... incompréhensible je crois...
Voici la requête que j'ai crée:
SQL UPDATE T_Inscription INNER JOIN (T_Signataires INNER JOIN (T_Campagnes INNER JOIN T_Import ON T_Campagnes.Code_campagne = T_Inscription.Code_campagne) ON T_Signataires.Code_signataire = T_Inscription.Code_signataire) ON (T_Import.Nom_signataire = T_Signataires.Nom_signataire) AND (T_Import.Campagne = T_Campagnes.Nom_campagne) SET T_Inscription.Code_signataire = T_Signataires.Code_signataire AND T_Inscription.Code_campagne = T_Campagnes.Code_campagne;
J'espère sincèrement que mes explications sont claires et que vous pourrez m'aider une fois de plus dans la conception de ma base de données (J'ai presque terminé, encore le publipostage que je suis en train de finaliser, cette requette suite à l'importation et la correction de deux-trois "bugs").
Merci pour vos réponses.
Jordan Michael.
Partager