Я хотел бы преобразовать это для нас в MySQL:
UPDATE product SET price = 12.95 FROM product INNER JOIN product_to_category ON product.product_id = product_to_category.product_id INNER JOIN category ON product_to_category.category_id = category.category_id AND category.parent_id = 39
MySQL не нравится часть FROM, и я не уверен, что INNER JOINs будут работать как написано.
UPDATE product SET price = 12.95 WHERE product_id in (SELECT product_id FROM product_to_category INNER JOIN category ON product_to_category.category_id = category.category_id WHERE category.parent_id = 39)
У меня нет вашей базы данных, поэтому я не могу протестировать, но, полагаю, вы могли бы использовать синтаксис нескольких таблиц для вашего оператора обновления:
UPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ... [WHERE where_condition]
Указание руководства:
Для синтаксиса с несколькими таблицами UPDATE обновляет строки в каждой таблице с именем table_references, которые удовлетворяют условиям.
В вашем случае что-то вроде этого может сделать трюк:
UPDATE product, product_to_category, category SET product.price = 12.95 WHERE product.product_id = product_to_category.product_id AND product_to_category.category_id = category.category_id AND category.parent_id = 39
Надеюсь это поможет !
Общий синтаксис для оператора UPDATE с несколькими таблицами
UPDATE <table> (INNER|LEFT|RIGHT|...) JOIN <table2> ON <condition> SET <field>=<value> WHERE <condition>
Поэтому ваше заявление должно работать, если вы перепишете его на
UPDATE product INNER JOIN product_to_category ON product.product_id = product_to_category.product_id INNER JOIN category ON product_to_category.category_id = category.category_id AND category.parent_id = 39 SET price = 12.95
(непроверенный, у меня нет экземпляра mysql)
UPDATE product INNER JOIN product_to_category ON product.product_id = product_to_category.product_id INNER JOIN category ON product_to_category.category_id = category.category_id AND category.parent_id = 39 SET product.price = 12.95