Jump to content

Comment faire pour remplir le champ supplier_reference avec la valeur de deux autres champs


Recommended Posts

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

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

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...