我正在尝试创建一个MySQL语句,我可以在php脚本中更新magento 1.9中几千种产品的重量。
这是我目前的陈述:
UPDATE dp_catalog_product_entity_decimal AS ped JOIN dp_eav_attribute AS ea ON ea.entity_type_id = 10 AND ea.attribute_code = 'weight' AND ped.attribute_id = ea.attribute_id SET ped.value = 8 WHERE ped.entity_id = P1000X3;
部分取自另一篇文章,所以我不确定它是否会起作用,但我目前在'where子句'中出现错误“#1054 - 未知列'P1000X3'”
我对sql连接并不是那么好,我根本不知道magento数据库,所以任何帮助使这个语句起作用都是非常有用的。
感谢。 马特
答案 0 :(得分:1)
您的Magento表是否具有前缀dp_
?确保这一点。
同样在这一部分:
WHERE ped.entity_id = P1000X3;
ped.entity_id 将是一个整数值(数字)。
我不知道你在哪里P1000X3
,但是使用它不会工作(它是一个字符串值)。即便如此,字符串应该用单引号'
包装,如下所示:
'P1000X3';
答案 1 :(得分:1)
使用Magento中的特定SKU更新产品重量的正确SQL就是这样(将YOUR-MAGENTO-SKU
替换为您要更新的项目的sku,将8
替换为权重值)。
UPDATE catalog_product_entity_decimal AS cped
JOIN eav_attribute AS ea ON ea.entity_type_id = (SELECT entity_type_id FROM eav_entity_type WHERE entity_type_code = 'catalog_product')
LEFT JOIN catalog_product_entity AS cpe ON cpe.entity_id = cped.entity_id
AND ea.attribute_code = 'weight'
AND cped.attribute_id = ea.attribute_id
SET cped.value = 8
WHERE cpe.sku = 'YOUR-MAGENTO-SKU';
在您的情况下,您拥有表前缀dp_
和产品sku P1000X3
,因此您的正确SQL将是:
UPDATE dp_catalog_product_entity_decimal AS cped
JOIN dp_eav_attribute AS ea ON ea.entity_type_id = (SELECT entity_type_id FROM dp_eav_entity_type WHERE entity_type_code = 'catalog_product')
LEFT JOIN dp_catalog_product_entity AS cpe ON cpe.entity_id = cped.entity_id
AND ea.attribute_code = 'weight'
AND cped.attribute_id = ea.attribute_id
SET cped.value = 8
WHERE cpe.sku = 'P1000X3';
运行此功能后,请务必重新索引Magento索引。