Versio

UPDATE JOIN

Overzicht Reageren

Meddiecap B

Meddiecap B

04/10/2010 23:52:18
Quote Anchor link
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.
 
PHP hulp

PHP hulp

25/05/2012 16:57:38
Gesponsorde koppelingen:
 
Niels Kieviet
Beheerder

Niels Kieviet

05/10/2010 07:38:23
Quote Anchor link
krijg je foutmeldingen? maak een if else structuur en gooi een exception of iets dergelijks met mysql_error( ).
 
Meddiecap B

Meddiecap B

05/10/2010 08:31:19
Quote Anchor link
Nope, geen foutmeldingen.

Deze query voer ik uit in phpmyadmin, dus er komt verder nog geen php bij kijken.
 
SilverWolf NL

SilverWolf NL

05/10/2010 09:11:35
Quote Anchor link
http://dev.mysql.com/doc/refman/5.1/en/update.html

Ofterwijl: je kan geen join in een update doen...
 
Meddiecap B

Meddiecap B

05/10/2010 11:25:30
Quote Anchor link
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.
 
Robert Deiman

Robert Deiman

05/10/2010 12:41:56
Quote Anchor link
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.
Gewijzigd op 05/10/2010 12:42:55 door Robert Deiman
 
Meddiecap B

Meddiecap B

06/10/2010 23:15:11
Quote Anchor link
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.
 



Overzicht Reageren