Bonjour,

Je souhaite faire une requete qui permet de mettre à jour tout les prix à 0 (de la table commande) en multipliant le prix production par le prix unitaire (de la table article). Pour chaque commande, il faudra mettre à jour les prix totaux = 0 par la somme du prix de production par le prix unitaire des articles de la commande correspondante.

En sachant qu'une commande possède plusieurs articles.

J'ai pensé à faire une requête mais mes deux essais se sont averés non concluant...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
UPDATE commande cmd inner join article art on art.cmd_id = cmd.cmd_id
   SET cmd.cmd_prix_total = (art.prix_prod * art.prix_unitaire)
 WHERE cmd.cmd_prix_total = 0
Le résultat de ma requete : missing SET keyword

J'ai pensé aussi à faire une requête imbriqué :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
UPDATE commande cmd
   SET cmd.cmd_prix_total = (SELECT SUM(art.prix_prod *
                                        art.prix_unitaire) AS Invoice_price
                               FROM commande cmd2
                              inner join article art on art.cmd_id = cmd2.cmd_id
                              WHERE cmd2.cmd_prix_total = 0
                              GROUP BY cmd2.cmd_numero)
 WHERE cmd.cmd_prix_total = 0
Résultat de la requete : single-row subquery returns more than one row

Le problème de cette dernière requête est que la requête imbriqué renvoie plusieurs valeurs.

La version Oracle est : 10g - 10.2.0.4.0

Quels sont les erreurs que j'ai pu commettre pour avoir pour chaque commande, le prix total de la commande pour chaque articles ?

Je vous remercie d'avance pour toute aide qui pourra m'être apporté