2 votes

Déclaration de mise à jour Sql Access Double Inner join

J'ai la commande suivante

UPDATE tbl1
SET tbl1.val = 7
FROM ((tbl3 INNER JOIN tbl2 ON tbl3.ID = tbl2.ID) 
INNER JOIN tbl1 ON tbl1.ID = tbl2.ID) 
WHERE tbl3.ID = 2
AND tbl1.val = [val];

Les innerjoins fonctionnent comme je les utilise ailleurs. Cependant, j'obtiens l'erreur suivante

"Erreur de syntaxe (opérateur manquant) dans l'expression de la requête"

J'ai déjà eu ce problème et ça s'est avéré être des parenthèses parce que l'accès est drôle. Cependant, je n'ai pas réussi à résoudre ce problème.

1voto

Gordon Linoff Points 213350

Vous devriez être en mesure d'utiliser exists :

UPDATE tbl1
SET tbl1.val = 7
WHERE EXISTS (SELECT 1
              FROM tbl3 INNER JOIN
                   tbl2 ON tbl3.ID = tbl2.ID
              WHERE tbl1.ID = tbl2.ID AND 
                    tbl3.ID = 2
             ) AND
      tbl1.val = [val];

1voto

Parfait Points 10832

Alternativement, MS Access fait soutien UPDATE ... JOIN (similaire à MySQL/MariaDB). Il suffit de remplacer FROM con UPDATE et passer à la première clause :

UPDATE ((tbl3 INNER JOIN tbl2 ON tbl3.ID = tbl2.ID) 
INNER JOIN tbl1 ON tbl1.ID = tbl2.ID) 
SET tbl1.val = 7
WHERE tbl3.ID = 2
  AND tbl1.val = [val];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X