diff --git a/install-dev/upgrade/php/fix_unique_specific_price.php b/install-dev/upgrade/php/fix_unique_specific_price.php index f2f163731..0e794fa4e 100644 --- a/install-dev/upgrade/php/fix_unique_specific_price.php +++ b/install-dev/upgrade/php/fix_unique_specific_price.php @@ -28,17 +28,19 @@ function fix_unique_specific_price() { - $res = Db::getInstance()->executeS('SELECT MIN(id_specific_price) id_specific_price - FROM '._DB_PREFIX_.'specific_price - GROUP BY `id_product`, `id_shop`, `id_currency`, `id_country`, `id_group`, `from_quantity`, `from`, `to` - '); - if ($res) - { - $ids_specific_price = '('; - foreach ($res as $row) - $ids_specific_price .= (int)$row['id_specific_price'].','; - $ids_specific_price = rtrim($ids_specific_price, ',').')'; - return Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'specific_price - WHERE id_specific_price NOT IN ('.$ids_specific_price.')'); - } -} + $result = Db::getInstance()->executeS(' + SELECT MIN(id_specific_price) id_specific_price + FROM '._DB_PREFIX_.'specific_price + GROUP BY `id_product`, `id_shop`, `id_currency`, `id_country`, `id_group`, `from_quantity`, `from`, `to`'); + if (!$result || !count($result)) + return true; // return tru if there is not any specific price in the database + + $sql = ''; + foreach ($result as $row) + $sql .= (int)$row['id_specific_price'].','; + $sql = rtrim($sql, ','); + + return Db::getInstance()->execute(' + DELETE FROM '._DB_PREFIX_.'specific_price + WHERE id_specific_price NOT IN ('.$sql.')'); +} \ No newline at end of file