在质量上更新magento 1.9的重量

时间:2015-02-04 18:10:07

标签: database magento

我正在尝试创建一个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数据库,所以任何帮助使这个语句起作用都是非常有用的。

感谢。 马特

2 个答案:

答案 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索引。