Ik ben vrij nieuw in de wereld van de databases, maar ben bezig met een PHP site met daarachter een MySQL database. Omdat ik nog (lokaal) aan het ontwikkelen ben, voeg ik nog wel eens velden toe aan een tabel, om zodoende minder in PHP te hoeven uitrekenen en afhandelen. Tot nu toe kon dat telkens eenvoudig, maar nu heb ik een (voor mijzelf in ieder geval) lastige query te pakken, waar ik nog niet uitkom.
Tabel1: Payment met (primary key) PaymentID, (...) , NumberTotal
Tabel2: PaymentPart met (primary key) PaymentPartID, PaymentID, (...) , Number
Met een relatie one Payment: many PaymentPart
Nu heb ik dus later Payment.NumberTotal toegevoegd, waarbij ik de waarde hiervan wil laten vullen door de som van de bijbehorende PaymentPart.Number met dezelfde PaymentID.
Dit werkt (uiteraard):
En geeft ook een mooie lijst met PaymentID en de som.
Dit werkt (uiteraard) niet:
Error: MySQL said: #1242 - Subquery returns more than 1 row
En dat is natuurlijk ook zo, dus het probleem is (denk ik) dat ik de Payment records één voor één moet doen updaten?
Ik weet dus niet hoe het wél moet. Hoe kan er voor zorgen dat de Payment records één voor één (allemaal) worden ge-update en dat daarbij de relatie PaymentID in meegenomen wordt?
Tabel1: Payment met (primary key) PaymentID, (...) , NumberTotal
Tabel2: PaymentPart met (primary key) PaymentPartID, PaymentID, (...) , Number
Met een relatie one Payment: many PaymentPart
Nu heb ik dus later Payment.NumberTotal toegevoegd, waarbij ik de waarde hiervan wil laten vullen door de som van de bijbehorende PaymentPart.Number met dezelfde PaymentID.
Dit werkt (uiteraard):
SQL:
1
2
3
| SELECT PaymentID, SUM(Number) FROM PaymentPart GROUP BY PaymentID |
En geeft ook een mooie lijst met PaymentID en de som.
Dit werkt (uiteraard) niet:
SQL:
1
2
3
4
5
6
| UPDATE Payment,PaymentPart SET NumberTotal= (SELECT SUM(Number) FROM PaymentPart GROUP BY PaymentID) WHERE Payment.PaymentID=PaymentPart.PaymentID |
Error: MySQL said: #1242 - Subquery returns more than 1 row
En dat is natuurlijk ook zo, dus het probleem is (denk ik) dat ik de Payment records één voor één moet doen updaten?
Ik weet dus niet hoe het wél moet. Hoe kan er voor zorgen dat de Payment records één voor één (allemaal) worden ge-update en dat daarbij de relatie PaymentID in meegenomen wordt?
NL Weerradar widget Euro Stocks widget Brandstofprijzen widget voor 's Dashboard