J'ai deux tables "banque" et "liens". Chaque utilisateur a un enregistrement bancaire mais peut avoir 0, 1 ou plusieurs enregistrements d'obligations.MySQL Mettre à jour une valeur de champ avec sous-requête avec plusieurs lignes retournées
Je veux écrire un script qui met à jour le champ "cash" dans la table "bank" avec les intérêts des liens multiples qu'un utilisateur peut détenir. L'intérêt est calculé par les champs de coupon d'émission * du tableau "obligations". Mais comme un utilisateur peut détenir plusieurs liens, il devrait le faire pour chaque lien.
En ce moment, j'ai essayé quelque chose comme ceci:
$MySQL->db_Query("UPDATE bonds bo, bank ba SET
ba.cash = ROUND(ba.cash + (bo.issuePrice * bo.coupon), 2),
ba.earned = ROUND(ba.earned + (bo.issuePrice * bo.coupon), 2)
WHERE LOWER(ba.user) = LOWER(bo.holder) AND
LOWER(bo.holder) <> LOWER('Bank');");
Mais il ne donne pas le résultat escompté. Je l'ai essayé avec un utilisateur avec 2 obligations, si les deux obligations devraient donner 500 intérêts chacune, donc un total de 1000, il ajoute seulement 500 comme il y a seulement 1 lien. Si je mets un intérêt de 500 obligations et l'autre avec un intérêt calculé de 1000, il ajoute soudain 475.
Convert à un SELECT, et confirmer la sortie est ce que vous attendez –