Fanchlerouge Posted May 13, 2016 Share Posted May 13, 2016 Bonjour, J'ai un gros souci sur un site en production. L'on me demande de remplir le champ supplier_reference avec la valeur de deux autres champs. Dans un premier temps, j'ai ajouté un champ supplémentaire en fin de table, puis fait la requête suivante sur une base de test avec les vrai données d'un fabricant. SELECT * FROM `ps_product` WHERE `id_manufacturer` =22 AND supplier_reference = CONCAT( abreviationmanufact, reference ) Le Hic cette requête fonctionne mais ne renvoie que 50 enregistrements avec le champ supplier_reference bien remplit alors que la requête ci-dessous sur le fabricant choisit compte 3 077 enregistrements. SELECT * FROM `ps_product` WHERE `id_manufacturer` =22 Ensuite la grande interrogation ? Comment mettre à jour en masse le champ supplier_reference soit avec un update ou un replace sachant que ces deux méthodes ne permettent de ne mettre à jour que les 3077 enregistrements avec 3077 requêtes uniques. Par exemple cette requête ne peut fonctionner : UPDATE `ps_product` (`id_product`, `id_supplier`, `id_manufacturer`, `id_category_default`, `id_shop_default`, `on_sale`, `online_only`, `ean13`, `upc`, `ecotax`, `quantity`, `minimal_quantity`, `price`, `wholesale_price`, `unity`, `unit_price_ratio`, `additional_shipping_cost`, `reference`, `supplier_reference`, `location`, `width`, `height`, `depth`, `weight`, `out_of_stock`, `quantity_discount`, `customizable`, `uploadable_files`, `text_fields`, `active`, `redirect_type`, `id_product_redirected`, `available_for_order`, `available_date`, `condition`, `show_price`, `indexed`, `visibility`, `cache_is_pack`, `cache_has_attachments`, `is_virtual`, `cache_default_attribute`, `date_add`, `date_upd`, `advanced_stock_management`, `id_tax_rules_group`, `pack_stock_type`, `abreviationmanufact`) VALUES (1281, 1, 22, 300040, 1, 0, 0, '0', '', 0.000000, 0, 1, 68.500000, 0.000000, '', 0.000000, 0.00, 'K1-KS11-CFK', 'MFK1-KS11-CFK', '', 0.000000, 0.000000, 0.000000, 0.000000, 2, 0, 0, 0, 0, 1, '404', 0, 1, '0000-00-00', 'new', 1, 1, 'both', 0, 0, 0, 4152, '2012-04-24 18:53:01', '2016-04-26 04:12:50', 0, 1, 3, 'MF'); Pouvez-vous m'aider ? En vous remerciant par avance Link to comment Share on other sites More sharing options...
Fanchlerouge Posted May 19, 2016 Author Share Posted May 19, 2016 Bon tant pis, je me réponds à moi-même. Cette manip fonctionne super bien sur le site en prod. Déjà mis à jour près de 100000 réf. Pour faciliter la concaténation, j'ai ajouté un champ en fin de table, ici nommé `abreviationmanufact`. Ensuite, je remplis le champ avec l'abréviation que je souhaite coller pour créer la reference_supplier avec la référence du produit concerné. La requête pour peupler le champ par exemple avec MF : UPDATE `ps_product` SET `abreviationmanufact`="MF" WHERE 1 Alors, il faut en trois faire la requête suivante : SELECT `id_product` , CONCAT( `abreviationmanufact` , `reference` ) FROM `ps_product` WHERE `id_manufacturer` = "9" Cela nous donne un résultat comme ceci : 10 MFSU-360 14 MFFGK207 40 MFFGK221 347 MFFGR157 J'exporte le résultat directement en CVS pour excel. Ensuite j'ajoute, supprime et déplace quels colonnes puis ajoute les données suivantes pour pouvoir créer mes requêtes d'update. UPDATE `pamracing`.`ps_product` SET `supplier_reference` = ' ' WHERE `ps_product`.`id_product` = ''; Ce qui donne la requête finie suivante : UPDATE `pamracing`.`ps_product` SET `supplier_reference` = 'MFSU-360' WHERE `ps_product`.`id_product` = '10'; Voilà, vous pouvez faire vos update en masse directement dans phpmyadmin. Bonne mise à jour. Fanch Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now