仅当“产品状态”处于激活状态时,才能批量将Prestashop产品分配到类别

仅当“产品状态”处于激活状态时,才能批量将Prestashop产品分配到类别,prestashop,categories,assign,bulk,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) + (@in

编辑:我找到了一个解决方案,你可以在这个问题的末尾找到:)

我正在网站上使用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的类别

  • 在数据库中,转到ps_category_product并删除id_category=3的所有条目

  • 在类别=3中插入所有有效产品

    将忽略插入ps_类别_产品从ps_产品中选择3,id_产品,0,其中活动=1

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

    选择@i:=-1; 更新
    ps\u类别\u产品
    设置
    位置
    =(选择@i:=@i+1),其中
    id\u类别
    =3

  • 我希望这能帮助某人:)


    塞德里克

    你尝试了什么?Prestashop插件上有许多大众版模块可用。noomiastudio的开发人员无法自己编写这样的简单脚本(参见?;)。请返回一些代码,否则此问题将被删除。抱歉@Florian Lemaitre,我刚刚更新了我的问题!提前谢谢你!你试了什么?Prestashop插件上有许多大众版模块可用。noomiastudio的开发人员无法自己编写这样的简单脚本(参见?;)。请返回一些代码,否则此问题将被删除。抱歉@Florian Lemaitre,我刚刚更新了我的问题!提前谢谢你!