次のクエリがあります。
SELECT entity_id AS product_id FROM catalog_product_entity cpe
LEFT JOIN cataloginventory_stock_item csi ON csi.product_id = cpe.entity_id
WHERE cpe.type_id = 'configurable'
AND csi.is_in_stock = 0
AND (SELECT SUM(qty) FROM catalog_product_relation cpr LEFT JOIN cataloginventory_stock_item cisi ON cisi.product_id = cpr.child_id WHERE cpr.parent_id = cpe.entity_id) > 0
次の結果が返されます。
product_id
-----------
912
906
894
559
364
上記のクエリの結果に存在するテーブルの product_id に基づいて、テーブルis_in_stock
内の列を更新しようとしています。cataloginventory_stock_item
私がやろうとしたことはこれでした:
UPDATE cataloginventory_stock_item
SET is_in_stock = 1
WHERE product_id IN (
SELECT entity_id AS product_id FROM catalog_product_entity cpe
LEFT JOIN cataloginventory_stock_item csi ON csi.product_id = cpe.entity_id
WHERE cpe.type_id = 'configurable'
AND csi.is_in_stock = 0
AND (SELECT SUM(qty) FROM catalog_product_relation cpr LEFT JOIN cataloginventory_stock_item cisi ON cisi.product_id = cpr.child_id WHERE cpr.parent_id = cpe.entity_id) > 0
)
そして、次のエラーが表示されます。
You can't specify target table 'cataloginventory_stock_item' for update in FROM clause
クエリを再構築して機能させる方法がわかりません。どんな助けでも大歓迎です。