我有一个简单的问题。 对于真正的程序员,应该选择花生。
该产品受特定价格规则影响时,我想更改该产品的类别。
这就是我所拥有的,但是什么也没有发生……
UPDATE psc5_product AND psc5_product_shop SET id_category_default=771 WHERE id_product IN (SELECT id_product FROM psc5_specific_price WHERE id_specific_price>0);
谢谢!
答案 0 :(得分:0)
尝试一下:
UPDATE `psc5_product`
SET `id_category_default` = 771
WHERE `id_product` IN (SELECT `id_product` FROM `psc5_specific_price` GROUP BY `id_product`);
UPDATE `psc5_product_shop`
SET `id_category_default` = 771
WHERE `id_product` IN (SELECT `id_product` FROM `psc5_specific_price` GROUP BY `id_product`);
答案 1 :(得分:0)
好的,这比我想的要复杂一些。
当预设的特定价格规则开始(从-到-日期)时,表psc5_product中没有更新。因此触发器没有开始他的工作。
因此,我需要从日期开始直到结束日期开始工作的mysql脚本,当结束日期结束时,需要回退更改。
示例:
规则1: id_product 1 id_category_default 1价格规则从到09-09-2018 00:00:00到10-09-2018 23:59:59 --->需要更改为id_category_default 2
规则2: 在11-09-2018 00:00:00 id_product不再受价格规则影响,并且id_category_default需要再次获得1。
目前我还不知道如何开始... 对我而言,最难的部分是规则2中的类别ID(升级结束后)是可变的(我有771个类别...),这在规则1中是固定的,没有那么难... < / p>
答案 2 :(得分:0)
尝试一下:
//Deleting old products in this category
Db::getInstance()->executes('DELETE FROM '._DB_PREFIX_.'category_product WHERE id_category = 771');
//Recovery of products with a reduction
$req = Db::getInstance()->executes('SELECT id_product FROM '._DB_PREFIX_.'specific_price');
//Product update with the correct default category + Product attribution in the category
foreach ($req as $resu) {
$prod = new Product($resu['id_product']);
$prod->id_category_default = 771;
$prod->save();
$product->addToCategories(array(0 => 771));
}