Here is a stand alone utility I wrote. It actually will also clean up any orphan foreign key entries that may be left from poor product management. I use this on Prestashop 1.4.9
<?php
ini_set('max_execution_time', 1800);
ini_set('max_input_time', 1800);
ini_set('memory_limit', '1536M');
set_time_limit(1800);
define('_DB_NAME_', 'yourdatabasename');
define('_DB_SERVER_', 'localhost');
define('_DB_USER_', 'yourusername');
define('_DB_PASSWD_', 'yourpassword');
/* Delete All Products for a Manufacturer */
$db_handle = mysql_connect(_DB_SERVER_, _DB_USER_, _DB_PASSWD_);
$db_found = mysql_select_db(_DB_NAME_, $db_handle);
//Put your manufacturer ID here
$current_manufacturer = 8;
$deletesql = "DELETE FROM ps_product WHERE id_manufacturer=".$current_manufacturer;
$deleteresult = mysql_query($deletesql);
print($deleteresult." product entries deleted<br>");
$deletesql = "
DELETE FROM ps_product_attribute
WHERE id_product NOT IN (SELECT p.id_product FROM ps_product p)
";
$deleteresult = mysql_query($deletesql);
print($deleteresult." product attributes deleted<br>");
$deletesql = "
DELETE FROM ps_product_sale
WHERE id_product NOT IN (SELECT p.id_product FROM ps_product p)
";
$deleteresult = mysql_query($deletesql);
print($deleteresult." product sales deleted<br>");
$deletesql = "
DELETE FROM ps_product_lang
WHERE id_product NOT IN (SELECT p.id_product FROM ps_product p)
";
$deleteresult = mysql_query($deletesql);
print($deleteresult." product language entries deleted<br>");
$deletesql = "
DELETE FROM ps_category_product
WHERE id_product NOT IN (SELECT p.id_product FROM ps_product p)
";
$deleteresult = mysql_query($deletesql);
print($deleteresult." product category entries deleted<br>");
$deletesql = "
DELETE FROM ps_image
WHERE id_product NOT IN (SELECT p.id_product FROM ps_product p)
";
$deleteresult = mysql_query($deletesql);
print($deleteresult." product image entries deleted<br>");
$deletesql = "
DELETE FROM ps_image_lang
WHERE id_image NOT IN (SELECT p.id_image FROM ps_image p)
";
$deleteresult = mysql_query($deletesql);
print($deleteresult." product image language entries deleted<br>");
$deletesql = "
DELETE FROM ps_product_attribute_combination
WHERE id_product_attribute NOT IN (SELECT p.id_product_attribute FROM ps_product_attribute p)
";
$deleteresult = mysql_query($deletesql);
print($deleteresult." product product attribute entries deleted<br>");
$deletesql = "
DELETE FROM ps_attribute_impact
WHERE id_product NOT IN (SELECT p.id_product FROM ps_product p)
";
$deleteresult = mysql_query($deletesql);
print($deleteresult." product attribue impact entries deleted<br>");
$deletesql = "
DELETE FROM ps_product_tag
WHERE id_product NOT IN (SELECT p.id_product FROM ps_product p)
";
$deleteresult = mysql_query($deletesql);
print($deleteresult." product tag entries deleted<br>");
$deletesql = "
DELETE FROM ps_tag
WHERE id_tag NOT IN (SELECT p.id_tag FROM ps_product_tag p)
";
$deleteresult = mysql_query($deletesql);
print($deleteresult." product tag entries deleted<br>");
$deletesql = "
DELETE FROM ps_feature_product
WHERE id_product NOT IN (SELECT p.id_product FROM ps_product p)
";
$deleteresult = mysql_query($deletesql);
print($deleteresult." product feature entries deleted<br>");
$deletesql = "
DELETE FROM ps_feature_value
WHERE id_feature NOT IN (SELECT p.id_feature FROM ps_feature_product p)
";
$deleteresult = mysql_query($deletesql);
print($deleteresult." product feature value entries deleted<br>");
$deletesql = "
DELETE FROM ps_feature_value_lang
WHERE id_feature_value NOT IN (SELECT p.id_feature_value FROM ps_feature_value p)
";
$deleteresult = mysql_query($deletesql);
print($deleteresult." product feature value language entries deleted<br>");
echo "<br><br>Finished<br>";
mysql_close($db_handle);
?>