Hoy con uno de mis clientes he tenido uno de los problemas que más molestan a la hora de organizar productos.
Tener un lenguaje alternativo instalado en prestashop y que no se utilice, ni se mantenga es un incordio.
Uno de los campos más problemáticos es en el mismo nombre.
Me dejo apuntada una consulta para obtener los productos que les falta el nombre de alguno de los dos idiomas principales.
SELECT p.id_product,
pl1.name AS name_lang1,
pl2.name AS name_lang2
FROM ps_product p
LEFT JOIN ps_product_lang pl1 ON p.id_product = pl1.id_product AND pl1.id_lang = 1
LEFT JOIN ps_product_lang pl2 ON p.id_product = pl2.id_product AND pl2.id_lang = 2
WHERE (pl1.name IS NOT NULL AND pl1.name != '' AND (pl2.name IS NULL OR pl2.name = ''))
OR (pl2.name IS NOT NULL AND pl2.name != '' AND (pl1.name IS NULL OR pl1.name = ''));
Una vez comprobado aquellos productos en los que tenemos falta de nombre. Podemos usar las siguientes consultas para olvidarnos del problema.
-- Actualizar productos que no tienen nombre en el idioma con id_lang = 1
UPDATE ps_product_lang pl1
JOIN ps_product_lang pl2 ON pl1.id_product = pl2.id_product
SET pl1.name = pl2.name
WHERE pl1.id_lang = 1
AND pl2.id_lang = 2
AND (pl1.name IS NULL OR pl1.name = '');
-- Actualizar productos que no tienen nombre en el idioma con id_lang = 2
UPDATE ps_product_lang pl2
JOIN ps_product_lang pl1 ON pl2.id_product = pl1.id_product
SET pl2.name = pl1.name
WHERE pl2.id_lang = 2
AND pl1.id_lang = 1
AND (pl2.name IS NULL OR pl2.name = '');
En este caso es el nombre, pero podemos cambiar name por alguna de las otras variables dentro de la tabla ps_product_lang
![](https://juanmanms.es/wp-content/uploads/2024/07/image.png)