2010-11-18 6 views
1

d'autre table que j'ai deux tables Orders et Order_Details Order_Details tables pour order_id champ agit comme clé étrangère à la table id_order de la table Orders.Mysql Mise à jour avec table joint - mise à jour d'un champ de la table avec la somme du champ

Je veux mettre à jour le tableau price_total du tableau Orders avec sommation des prix du tableau Order_Details.

J'ai essayé avec la requête suivante, mais a échoué: -

Update Orders, Order_Details 
    SET Orders.price_total = sum(Order_Details.price) 
WHERE Orders.price_total=0 
GROUP BY Order_Details.id_order 

Erreur -

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP BY Order_Details.id_order' at line 4 

Comment faire dans une requête?

Merci

+0

vous n'avez pas speciy quelle colonne dans les commandes link à Order_Details.id_order – ajreal

+0

@ajreal - Le champ 'order_id' des tables' Order_Details' agit comme une clé étrangère de la table 'id_order' de la table Orders. Correction appliquée dans la requête –

Répondre

4

Vous pouvez simplifier à

Update Orders 
SET Orders.price_total = 
(
    SELECT 
    sum(Order_Details.price) 
    FROM Order_Details 
    WHERE 
    Orders.id_order=Order_Details.order_id 
) 
WHERE Orders.price_total=0; 

mis à jour pour le regroupement

Update Orders, Order_Details 
    SET Orders.price_total = sum(Order_Details.price) 
WHERE 
    Orders.price_total=0 AND 
    Orders.id_order=Order_Details.order_id  
GROUP BY Order_Details.id_order 

+0

Merci, je me débattais avec la méthode de sous-requête aussi aujourd'hui. :) Quoi qu'il en soit, veuillez répondre si vous pouvez également corriger la méthode de regroupement et de regroupement. –

+0

Toujours la même erreur '# 1064 - Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de 'GROUP BY Order_Details.id_order' à la ligne 6' –

+0

@sandeepan - groupe par ne peut pas utiliser avec mise à jour, désolé pour les mauvaises informations – ajreal

Questions connexes