Jump to content

Cherche requête SQL pour supprimer des milliers de produits


Recommended Posts

Bonjour à tous,

J'ai plusieurs milliers de produits à supprimer dans mon catalogue.

Ils ont tous en point commun le mot "custom" dans leur référence.

Je cherche une requête SQL pour faire ça, pour traduire donc : Supprimer tous les produits qui ont le mot "custom" dans leur référence.

Quelqu'un pour m'aider?

Merci

Edited by Gavimse (see edit history)
Link to comment
Share on other sites

Bonjour, essayez cette requête, assurez-vous de faire une sauvegarde de la base de données.

DELETE ps_product, ps_product_shop FROM ps_product INNER JOIN ps_product_shop ON ps_product.id_product = ps_product_shop.id_product WHERE ps_product.reference = 'custom';

 

Link to comment
Share on other sites

il y a 9 minutes, Ewonta a dit :
DELETE ps_product, ps_product_shop FROM ps_product INNER JOIN ps_product_shop ON ps_product.id_product = ps_product_shop.id_product WHERE ps_product.reference = 'custom';

 

Hum attention, il y a plein de tables associatives de la table product, en procédant de la sorte vous allez créer plein de problèmes d'intégrité dans votre base et des données "orphelines" 😞 Je vous conseillerai plutôt de le faire par un script php qui récupère la liste des ID des produits concernés et faire une boucle en appelant la suppression du produit.

foreach( $productList as $product) {
	$p = new Product( $product['id_product']);
	$p->delete();
	unset($p);
}

 

Link to comment
Share on other sites

Salut,

Vous pouvez utiliser le script PHP ci-dessous pour supprimer les produits ayant 'custom' dans leur référence.

$sql = 'SELECT id_product FROM ' . _DB_PREFIX_ . 'product WHERE reference LIKE "%custom%"';
$product_ids = Db::getInstance()->executeS($sql);

if (!empty($product_ids)) {
foreach ($product_ids as $product) {
$product_id = (int) $product['id_product'];

$product_obj = new Product($product_id);

$product_obj->delete();
}

}

Salutations.

Link to comment
Share on other sites

Voici un exemple avec un ficher delp.php à déposer à la racine de votre Presta.

<?php
include dirname(__FILE__).'/config/config.inc.php';

ini_set('display_errors', 'on');
error_reporting(E_ALL);

$sql = 'SELECT id_product FROM ' . _DB_PREFIX_ . 'product WHERE reference LIKE "%custom%"';
$product_ids = Db::getInstance()->executeS($sql);

if (!empty($product_ids)) {
  foreach ($product_ids as $product) {
    $p = new Product($product['id_product']);
    $p->delete();
    unset($p);
  }
}

Attention cependant à la requête "floue" les produit dont la référence serait customin, customize... seront aussi pris en compte. 😉

Supprimez bien le fichier après !

Edited by Prestashop Addict (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...