我在重新计算prestashop类别表中的位置(position,nleft和nright)时遇到问题。 (这一次,所有位置nleft和nright列的值均为零)。
我有2个数据库arggep和arggep2,我想使类别表同步并重新计算位置。
请帮助我只写选择查询进行更新或插入。

SELECT honnan.`id_category`, honnan.`id_parent`, '1', honnan.`level_depth`, ??????????????`nleft`, ?????????`nright`, honnan.`active`, honnan.`date_add`, NOW(), ???????????`position`
FROM arggep2.ps_category hova RIGHT JOIN arggep.category honnan ON hova.`id_category`=honnan.`id_category`
WHERE hova.`id_category` IS NULL

最佳答案

我解决了

SET @pos=0;
SET @pid=-1;
INERT INTO ".$this->hova."category (`id_category`, `id_parent`, `id_shop_default`, `level_depth`, `nleft`, `nright`, `active`, `date_add`, `date_upd`, `position`) VALUES
SELECT honnan.`id_category`, honnan.`id_parent`, honnan.`id_shop_default`, honnan.`level_depth`, honnan.`nleft`, honnan.`nright`, honnan.`active`, honnan.`date_add`,  NOW(), honnan.`position_recalc`
FROM (
SELECT b.`id_category`, b.`id_parent`, b.`id_shop_default`, b.`level_depth`, b.`nleft`, b.`nright`, b.`active`, b.`date_add`, @pos:=IF(@pid=b.`id_parent`, @pos+1, 0) AS position_recalc, @pid:=b.`id_parent` FROM ".$this->honnan."`category` b ORDER by b.`id_parent` ) honnan RIGHT JOIN ".$this->honnan."category honnan ON hova.`id_category`=honnan.`id_category` WHERE hova.`id_category` IS NULL;

07-27 18:58