更新可变产品的所有产品变体销售价格

rlcwz9us  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(444)

我有大约10种产品,每种都有将近200种变化。我需要更新一个特定产品的销售价格,包括它的所有变化。
问题是:
所有的变体都有不同的价格。未输入销售价格-所有销售价格输入框均为空。
我需要一个sql解决方案来运行和更新特定产品的所有销售价格,方法是取常规价格并从中扣除350,或者
在这一阶段,我尝试了许多解决方案,包括woocommerce内置的解决方案“设置销售价格”,但由于价格不同,我没有意识到任何其他方法。

SELECT * FROM `wp_postmeta` WHERE post_id = "1097"
UPDATE `meta_id` = (SELECT * FROM `wp_postmeta` WHERE `meta_value` = _regular_price) - 350 WHERE `meta_key` = _sale_price

对stackoverflow的研究表明,wp\u postemta表保存产品的值,wp\u posts表保存产品id。
以下是我面临的问题的屏幕截图:

您将看到meta\u id是不同的,post\u id是相同的,这是因为在wordpress中post\u id是产品,在本例中,post\u id本身有许多变体,meta\u id是我需要为每个变体更新的\u sale\u price部分
我希望这有道理!

jobtbby3

jobtbby31#

试试这个(哪行 AND p.ID = 19 ==>19是您的可变产品id):

UPDATE wp_postmeta as pm
JOIN  wp_postmeta as pm2 ON pm.post_id = pm2.post_id
SET pm.meta_value = ( pm2.meta_value - 350 )
WHERE pm.meta_key LIKE '_sale_price'
  AND pm2.meta_key LIKE '_regular_price'
  AND pm.post_id IN
    ( SELECT p2.ID
     FROM wp_posts AS p
     JOIN wp_posts AS p2 ON p2.post_parent = p.ID
     WHERE p.post_type = 'product'
       AND p.post_status = 'publish'
       AND p.ID = 19
       AND p2.post_type = 'product_variation'
       AND p2.post_status = 'publish' );

已测试并正常工作(之前始终备份)
因此,在这个sql查询中,对于一个定义的变量productID,它将用常规价格减去350来替换所有的productvariationsale prices…

正如你所看到的那样…没有错误

相关问题