OVH Cloud OVH Cloud

Update et Sous-requête

1 réponse
Avatar
cyberjc
Bonjour, je n'arrive pas =E0 formuler une requ=EAte UPDATE qui=20
renseigne un champs d'une table A avec la somme de=20
plusieurs lignes d'un champs d'une table B - A et B etant=20
li=E9es par le champs [num]. Merci

1 réponse

Avatar
Michel Walsh
Salut,


On ne peut pas utiliser SUM, en effet.

Trois solutions.

- passer par une table. C'est à dire, de faire les SUM requires avec
une requête SELECT, transformer la requête de type select en Make Table. Une
fois la table crée, l'utiliser.

- utiliser DSum.

- Utiliser une sommation, +, sur un joint, après intiialisation du
résultat.


Un exemple est plus approprié, je crois.

TableB
num, valeur ' champs


TableA
num, sonTotal ' champs



Méthode1 .

3 requêtes


"SELECT num, SUM(valeur) As tot INTO temp FROM tableB GROUP BY num"

"UPDATE tableA INNER JOIN temp ON tableA.num=temp.num
SET tableA.sonTotal=temp.tot"

"DROP TABLE temp"



Méthode2.

1 requête, mais probablement lente si la table A est grande



"UPDATE tableA SET tableA.sonTotal= DSum('Valeur' , 'TableB', 'num='
& num )"



Méthode3.



2 requêtes.


"UPDATE tableA SET sonTotal = 0" '
initialisation


"UPDATE tableA INNER JOIN tableB ON tableA.Num = TableB.Num
SET tableA.sonTotal = tableA.sonTotal + tableB.Valeur" '
sommation




Espérant être utile,
Vanderghast, Access MVP



"cyberjc" wrote in message
news:04f901c3c9ed$d6810e40$
Bonjour, je n'arrive pas à formuler une requête UPDATE qui
renseigne un champs d'une table A avec la somme de
plusieurs lignes d'un champs d'une table B - A et B etant
liées par le champs [num]. Merci