Bonjour à tous,
Je cherche à compiler deux tables liées par une relation de 1 à n en une seule avec
table1:
lb_patronyme, lb_struct, date_j, date_m, date_a, lb_groupe, lb_nom, cd_taxon.
table2 (qui centralise les paramètres des objets de la table 1):
cd_taxon, intitule_parametre, txt_val_param
Ce mode de centralisation permet de laisser libre l'utilisateur de choisir ses paramètres.
Or, il n'est pas évident d'en faire une synthèse en passant les "intitule_parametre" en colonnes.
Pour ça:
1/ je créé une requête "Requete_source" centralisant les infos que je veux.
2/ je créé une table "Table_finale" avec un index + les x champs de Requete_source (ceux issus de la table 1) + autant de champs que de paramètres.
2/ je nourris la table en deux étapes:
a/ j'insère les données de la requete_source (champs issus de la table "1"):
INSERT INTO Table_finale ( [lb_patronyme], [lb_struct], [date_j], [date_m], [date_a], [lb_groupe], [lb_nom], [cd_taxon] ) SELECT [lb_patronyme], [lb_struct], [date_j], [date_m], [date_a], [lb_groupe], [lb_nom], [cd_taxon] FROM R_Source GROUP BY [lb_patronyme], [lb_struct], [date_j], [date_m], [date_a], [lb_groupe], [lb_nom], [cd_taxon]
b/ je fais une boucle sur les différentes valeurs pour mettre à jour la colonne qui correspond au paramètre (dans l'exemple ci-dessous, il s'agit du paramètre "cd_methode_obs"):
UPDATE Table_finale INNER JOIN R_Source ON Table_finale.cd_taxon = R_Recherche.cd_taxon SET Table_finale.[cd_methode_obs] = R_Recherche.txt_val_param WHERE R_Recherche.lb_param = "cd_methode_obs"
J'ai le message suivant:
"erreur 3073: l'opération doit utiliser une requête qui peut être mise à jour". Or la table à mettre à jour n'est pas une requête et elle possède un index.
Une piste?
Partager