2016-04-16 19 views
1

プレスタシップカテゴリテーブルの位置(位置、nleft、nright)を再計算する際に問題があります。 (この時点では、位置、nleft、nright列の値はすべてゼロ)。 私は2つのデータベースarggepとarggep2を持っており、カテゴリテーブルをsinchronizeして位置を再計算したいと思います。 更新または挿入のための書き込み専用の選択クエリを手伝ってください。prestashopカテゴリテーブルの位置をmysqlで再計算する方法

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 
+0

を解決 – petermeter

答えて

0

私は、クエリを解決こんにちは

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; 
関連する問題