diff --git a/classes/Feature.php b/classes/Feature.php index 6d9c2dc7e..83b49bb57 100644 --- a/classes/Feature.php +++ b/classes/Feature.php @@ -313,19 +313,14 @@ class FeatureCore extends ObjectModel public static function cleanPositions() { $return = true; - $sql = ' - SELECT `id_feature` - FROM `'._DB_PREFIX_.'feature` - ORDER BY `position`'; - $result = Db::getInstance()->executeS($sql); - - $i = 0; - foreach ($result as $value) - $return = Db::getInstance()->execute(' - UPDATE `'._DB_PREFIX_.'feature` - SET `position` = '.(int)$i++.' - WHERE `id_feature` = '.(int)$value['id_feature']); + UPDATE `'._DB_PREFIX_.'feature` f LEFT JOIN + (SELECT @i := @i +1 AS rank, id_feature, position + FROM `'._DB_PREFIX_.'feature` JOIN (SELECT @i :=1) dummy + ORDER by position) AS f2 + USING(id_feature) + SET f.position = f2.rank-1'; + $return = Db::getInstance()->executeS($sql); return $return; }