Je veux faire quelque chose qui me semble classique : mettre à jour un champ dans une table en cumulant les valeurs d'un champ d'une table liée
J'utilise Access 2003, mais j'ai vu plusieurs messages sur le même problème concernant d'autres bases de données.

Soit une table A avec pour champs Clef et Total
et une table B avec pour champs Clef, Clef_A et Valeur
la jointure se faisant entre A.Clef et B.Clef_A

Access me génère la requête suivante (qui me parait pas mal):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
UPDATE a INNER JOIN b ON a.Clef = b.Clef_A SET a.Total = Sum([Valeur]);
mais me donne le message d'erreur suivant :
Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée 'Total' comme une partie de la fonction d'agrégat

Sur les forums on trouve des conseils du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
UPDATE a SET a.Total = (select sum(b.Valeur) from b where  a.Clef = b.Clef_A);
Qui ne donnent pas de satisfaction (sur les forums)
et me donnent l'erreur :
L'opération doit utiliser une requête qui peut être mise à jour

Même message en créant une requête de sélection dont on se sert dans la requête de mise à jour (traduction en 2 requêtes de la précédente)

La seule solution semble être de passer par une table intermédiaire, ce que j'aimerai éviter.

J'ai beau relire les messages d'erreurs je ne vois pas ce qu'ils signifient et d'où vient le problème.
Encore une fois ça ne me parait pas extraordinaire comme fonctionnalité, il doit bien y avoir un moyen prévu en SQL