修改价格为原来的0.6154倍!!

系统 1651 0

 

修改价格为原来的0.6154倍!!

执行的语句

update catalog_product_index_price set price = round(price*0.6154),final_price = round(final_price*0.6154),min_price = round(min_price*0.6154),max_price = round(max_price*0.6154)




UPDATE catalog_product_entity_decimal val SET  val.value = round(val.value* 0.6154)  WHERE  val.attribute_id = 64

 

 

 

 

附:资料

http://fishpig.co.uk/magento-update-product-prices-globaly/

 

 

Magento: Update Product Prices Globaly

Posted on the 7th of June, 2010 at 12:00pm

There are many ways to mass update product attributes in Magento, each well suited to a different purpose. Magento’s built-in mass product attribute updater is great if you want to modify a selection of products or the new attribute value is the same for all products you want to edit. Alternatively, if you wish to alter the attributes in more dynamic ways, updating them programmatic ally via PHP is probably a better way. The downside to both of these methods is speed, with each product update taking a few seconds to complete. While this time can be dramatically reduced by disabling indexing, the wait can still be too long for a store with a massive catalog. A more efficient way to update product attributes is to write direct SQL queries. As an example, I will show you how to mass update product pricing for all products, products from a certain store and products that use a certain attribute set.

Why would I want to mass update price?

When I was first asked to do this I asked myself the same question, however, the reason is quite simple. In Magento, shipping costs aren’t usually displayed to the user until they enter their delivery address. While this makes sense, the customer usually enters their delivery address during the checkout process, meaning a lot of customers weren’t aware of this extra cost. During a study of one site, I found that almost 30% of customers were leaving the store during checkout and that this bounce rate could almost definitely be attributes to the shipping cost. To remove this problem, it was decided I should add £6 (the shipping cost) on to every product price and offer free shipping instead. As soon as this was done a lot less people left the site during checkout!

How do I update product price globally?

In this first example, I will add £6 to every single product price.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
<?php
 
$priceToAdd = 6;
 
$write = Mage::getSingleton( 'core/resource' )->getConnection( 'core_write' );
$write ->query("
   UPDATE catalog_product_entity_decimal val
   SET  val.value = (val.value + $priceToAdd )
   WHERE  val.attribute_id = (
      SELECT attribute_id FROM eav_attribute eav
      WHERE eav.entity_type_id = 4
        AND eav.attribute_code = 'price'
     )
");

If you have a development site, add the code to a template file or run Magento’s code in an external PHP file and all of your products should now cost £6 more.

How do I update all prices from a certain store?

This technique is useful when working in a multi-store Magento environment. The SQL query used is very similar, except you will need to add a clause in the WHERE section to limit the records updated by store ID.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
<?php
 
$priceToAdd = 6;
$storeId = 4;
 
$write = Mage::getSingleton( 'core/resource' )->getConnection( 'core_write' );
$write ->query("
   UPDATE catalog_product_entity_decimal val
   SET  val.value = (val.value + $priceToAdd )
   WHERE  val.attribute_id = (
      SELECT attribute_id FROM eav_attribute eav
      WHERE eav.entity_type_id = 4
        AND eav.attribute_code = 'price'
     )
     AND val.store_id = $storeId
");

How do I update all product prices with a certain attribute set?

The concept behind this is the same, however you will need to join an extra table so that you can filter using attribute_set_id.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
<?php
 
$priceToAdd = 6;
$attributeSetId = 4;
 
$write = Mage::getSingleton( 'core/resource' )->getConnection( 'core_write' );
$write ->query("
   UPDATE catalog_product_entity_decimal val
   SET  val.value = (val.value + $priceToAdd )
   WHERE  val.attribute_id = (
      SELECT attribute_id FROM eav_attribute eav
      WHERE eav.entity_type_id = 4
        AND eav.attribute_code = 'price'
     )
AND entity_id = (
    SELECT p.entity_id FROM catalog_product_entity p
    WHERE p.attribute_set_id = $attributeSetId
)
");

How do I update the Special Price?

This one is also extremely easy! If you take any of the above examples and swap ‘price’ for ‘special_price’ they will all work! See below for an example of how to update the special price for every product.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
<?php
 
$priceToAdd = 6;
 
$write = Mage::getSingleton( 'core/resource' )->getConnection( 'core_write' );
$write ->query("
   UPDATE catalog_product_entity_decimal val
   SET  val.value = (val.value + $priceToAdd )
   WHERE  val.attribute_id = (
      SELECT attribute_id FROM eav_attribute eav
      WHERE eav.entity_type_id = 4
        AND eav.attribute_code = 'special_price'
     )
");

These features only scratch the surface of the Magento database but should hopefully give you an insight into the possibility of modifying data directly in the database. This method is much quicker than the alternatives, however can go drastically wrong extremely easily. I would make sure you test ALL queries on a development server and always back up your live server before running a query!

修改价格为原来的0.6154倍!!


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论