MySQL mise à JOUR avec sélection de la SOMME provenant de différentes tables
J'ai deux tables:
ITEMS
les quantités et les unit_price (id | nom | order_id | qt | unit_price)
et le tableau ORDERS
.
Je veux UPDATE
table orders
et les placer dans orders.total_price sum of multiplications qt*unit_price
pour les mêmes commandes pour obtenir prix total de la commande.
La SELECT
requête sur la table des articles est très simple et fonctionne très bien donner les sommes de tous les articles dans la même order_id:
SELECT SUM(items.qt*items.unit_price) from items GROUP by items.order_id
mais je ne peux pas insérer cette valeur dans mon ORDERS
table. Je ne pouvais pas faire ce travail:
UPDATE orders, items SET orders.total_price = (SELECT SUM(items.qt*items.unit_price)
FROM items GROUP BY items.order_id) WHERE orders.id = items.order_id
il retourne "Subquery returns more than 1 row"
J'ai trouvé une question très semblable ici mais la réponse n'a pas fonctionné pour moi aussi:
UPDATE orders SET orders.t_price = (SELECT SUM(items.qt*items.unit_price) from items WHERE orders.id = items.order_id)
Je l'ai fait pour l'instant dans phpmyadmin donc la deuxième requête ci-dessus est le réel de la requête j'essaie: "mise à JOUR des commandes, des éléments de commande.total_price = (SELECT SUM(éléments.qt*les éléments.unit_price) DU GROUPE éléments PAR éléments.order_id) OÙ les commandes.id = éléments.order_id"
OriginalL'auteur Milosz | 2012-09-23
Vous devez vous connecter pour publier un commentaire.
Vous pouvez
UPDATE
avecJOIN
ing les deux tableaux:vous pouvez utiliser le
WHERE
clause d'approvisionnement condition supplémentaire pour la mise à jour de la colonne spécifiée uniquement si cette condition était vrai, notez que cette clause est facultative et de l'écrire si vous en avez besoin. Aussi, il y avait 0 lignes affectées, car il pourrait y avoir pas de champs de satisfaire la condition de jointure qui estON o.id = i.order_id
Je suis désolé, c'était mon manque de connaissance que mysql dans phpmyadmin ignore dans "touchés" valeurs de ces enregistrements ont la même valeur déjà. Je doit avoir des valeurs correctes dans tous les dossiers avant, de jouer avec plusieurs requêtes différentes. Je vous remercie.
OriginalL'auteur Mahmoud Gamal