UPDATE JOIN
Hallo,
Ik wil een update join maken. Wat ik wil doen is het updaten van een order_artikelen tabel, zodat de bestelde artikelen andere prijzen krijgen.
MySQL is als volgt:
UPDATE artikelen p
INNER JOIN order_artikelen pp
ON p.id = pp.artikel_id
INNER JOIN orders ppp
ON pp.order_id = ppp.order_id
SET pp.sub_totaal = p.prijs * pp.aantal
WHERE ppp.datum_besteldag = '20101007'
Echter, na uitvoer zijn er 0 rijen bewerkt. De artikelen uit p en pp bestaan, en er is een ppp met een datum_besteldag '20101007'. De query is syntactisch in orde.
Ik vraag mij af waarom er geen update plaats vind? Ik hoop dat jullie tips hebben.
Alvast bedankt.
Ik wil een update join maken. Wat ik wil doen is het updaten van een order_artikelen tabel, zodat de bestelde artikelen andere prijzen krijgen.
MySQL is als volgt:
UPDATE artikelen p
INNER JOIN order_artikelen pp
ON p.id = pp.artikel_id
INNER JOIN orders ppp
ON pp.order_id = ppp.order_id
SET pp.sub_totaal = p.prijs * pp.aantal
WHERE ppp.datum_besteldag = '20101007'
Echter, na uitvoer zijn er 0 rijen bewerkt. De artikelen uit p en pp bestaan, en er is een ppp met een datum_besteldag '20101007'. De query is syntactisch in orde.
Ik vraag mij af waarom er geen update plaats vind? Ik hoop dat jullie tips hebben.
Alvast bedankt.
Gesponsorde koppelingen:
krijg je foutmeldingen? maak een if else structuur en gooi een exception of iets dergelijks met mysql_error( ).
Nope, geen foutmeldingen.
Deze query voer ik uit in phpmyadmin, dus er komt verder nog geen php bij kijken.
Deze query voer ik uit in phpmyadmin, dus er komt verder nog geen php bij kijken.
http://dev.mysql.com/doc/refman/5.1/en/update.html
Ofterwijl: je kan geen join in een update doen...
Ofterwijl: je kan geen join in een update doen...
ok.
hier staat dat het wel kan:
http://www.electrictoolbox.com/article/mysql/cross-table-update/
Maar denk dat mysql.com het beter weet.
Ik zal een andere oplossing gaan zoeken.
hier staat dat het wel kan:
http://www.electrictoolbox.com/article/mysql/cross-table-update/
Maar denk dat mysql.com het beter weet.
Ik zal een andere oplossing gaan zoeken.
UPDATE product LEFT JOIN product_tariff ON product.product_id = product_tariff.product_id SET product.name = 'ZZP1a', product_tariff.wmo_domicile = 'ZZP1a' WHERE product.product_id = 9
Dit heb ik net uitgevoerd in PHPmyAdmin. Gaat prima, heb het nog even nagelopen en de update is keurig uitgevoerd.
Overigens is het voor jou wel aan te raden eerst eens een select te doen, op de voorwaarde (WHERE) die je opgeeft. Wellicht dat die daar niets op terug geeft, als resultaten en dus ook niets zal updaten.
Overigens als het niet zou kunnen kreeg je een error terug, en niet "0 rijen bijgewerkt". Dus het kan wel. Ik vermoed doordat die 0 updates doet dat door de voorwaarde/ koppelingen die je legt al geen resultaten worden gevonden. Zonder resultaten valt er ook niets te updaten.
Dit heb ik net uitgevoerd in PHPmyAdmin. Gaat prima, heb het nog even nagelopen en de update is keurig uitgevoerd.
Overigens is het voor jou wel aan te raden eerst eens een select te doen, op de voorwaarde (WHERE) die je opgeeft. Wellicht dat die daar niets op terug geeft, als resultaten en dus ook niets zal updaten.
Overigens als het niet zou kunnen kreeg je een error terug, en niet "0 rijen bijgewerkt". Dus het kan wel. Ik vermoed doordat die 0 updates doet dat door de voorwaarde/ koppelingen die je legt al geen resultaten worden gevonden. Zonder resultaten valt er ook niets te updaten.
Gewijzigd op 05/10/2010 12:42:55 door Robert Deiman
Jeetje..ik weet eindelijk waar de fout zat:
SET pp.sub_totaal = p.prijs * pp.aantal --> daaro.
Er werd niets geupdate omdat er niets geupdate hoefde te worden. Het nieuwe sub_totaal bleef namelijk steeds onveranderd. Als ik de prijs van een artikel deed veranderen, dan werden er wel rijen geupdate.
Iig bedankt voor jullie tips/aanwijzingen.
SET pp.sub_totaal = p.prijs * pp.aantal --> daaro.
Er werd niets geupdate omdat er niets geupdate hoefde te worden. Het nieuwe sub_totaal bleef namelijk steeds onveranderd. Als ik de prijs van een artikel deed veranderen, dan werden er wel rijen geupdate.
Iig bedankt voor jullie tips/aanwijzingen.



