Bonjour.
Pour la question 1, l'erreur me paraît assez parlante : tu essaies d'entrer plusieurs valeurs pour la même ligne pour un même champ... Ce qui n'est pas surprenant vu que tu regroupes ton aggrégat sur 2 champs, et que tu ne filtres pas le résultat.
Quel(s) liens existent-ils entre tempo et T_generale ?
Il faudrait quelque chose du genre :
1 2 3 4 5
| UPDATE tempo tp
SET RRC_RGPT_BEN=(SELECT sum(RRC)
FROM T_generale t_Gen
WHERE tp.lien_T_Gen=t_Gen.lien_tp
GROUP BY ...); |
Tu saisis l'idée ?
2ème question : déjà, tu auras le même problème que précédemment... Il faut que ta requête qui te retourne la nouvelle valeur pour ton champ ne retourne qu'une seule ligne par enregistrement de la table à mettre à jour.
Quoi qu'il en soit :
(select sum(RRC) from T_generale group by ADH, RNG, REGPT_ACT)
cette partie de la requête de mise à jour devrait prendre le contenu de T_generale avant le début de la mise à jour. Donc une telle requête est (il me semble) possible, mais elle ne prendra pas en compte les valeurs qu'elle met elle-même à jour (heu, tu me suis ?
)
Donc si ça te va, tant mieux, sinon, je ne vois pas d'autre solution qu'une procédure...
Quoi qu'il en soit, il faut commencer par résoudre le 1er problème, afin voir comment faire un update valide.
Partager