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.
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.
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.
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.

Reageren