仅当产品状态被激活时,批量将Prestashop产品分配到类别

时间:2016-05-31 14:49:25

标签: prestashop categories assign bulk

编辑:我找到了一个解决方案,你可以在这个问题的最后找到它:)!

我在网站上使用Prestashop 1.6.1.5。我想将具有活动状态的所有产品批量分配到id = 3的类别。我还希望此类别中产品的位置从0开始增加。

现在这就是我所做的:

INSERT IGNORE INTO ps_category_product SELECT 3, id_product, ((SELECT MAX(position) FROM ps_category_product WHERE id_category = 3) + (@inc := @inc + 1)) FROM ps_product INNER JOIN (SELECT @inc := 0) AS i

在ps_category_product表中为每个产品创建一个新条目,与id_category = 3相关联。每个条目都有一个递增的位置值。

但是现在,我只想要活跃的产品...如果我在请求结束时添加“WHERE active = 1”,它只为活动产品创建好的条目但是位置字段等于0对于每个条目......

INSERT IGNORE INTO ps_category_product SELECT 3, id_product, ((SELECT MAX(position) FROM ps_category_product WHERE id_category = 3) + (@inc := @inc + 1)) FROM ps_product INNER JOIN (SELECT @inc := 0) AS i WHERE active = 1

怎么了?

我怎么能这样做?

编辑:这是一个解决方案!

事实上,即使我的第一个查询对位置增量也没有正常工作。

所以最后我找到了一个新的解决方案。如果有人想要使用它,请不要忘记在开发网站上测试它,如果出现问题,我不负责;)!

因此,假设我们要将所有有效产品批量分配到ID = 3的类别。

  1. 在您的数据库中,转到ps_category_product并删除所有id_category = 3

  2. 的条目
  3. 在category = 3

    中插入所有有效产品

    INSERT IGNORE INTO ps_category_product SELECT 3,id_product,0 FROM ps_product WHERE active = 1

  4. 将产品的位置从0增加到X

    SELECT @i:= -1; 更新ps_category_product SET position =(选择@i:= @i + 1)WHERE id_category = 3;

  5. 我希望这可以帮助某人:)!

    和Cédric

0 个答案:

没有答案