Pack_12 Posted January 16, 2020 Share Posted January 16, 2020 (edited) Hola, (Prestashop 1.7.5.2 + warehouse) Debido a la mala práctica de crear muchos productos a partir de "Duplicar producto", resulta que me encuentro que muchísimos productos en el catálogo de "Portugués" tienen distintos títulos y otros campos con diferentes valores, concretamente con los valores del producto al que copió, pero como solo modifiqué posteriormente esos productos en castellano, todos esos productos se han quedado con valores incorrectos. Para solucionarlo, estoy tratando de averiguar una consulta sql para copiar los valores del idioma castellano (id_lang=1) a los valores del resto de idiomas. Muestro tabla aclaratoria: Por ejemplo en el id=2150, se ve que el "name" es el correcto. Busco la consulta que me permita copiar el valor de "name" de las filas donde id_lang=1 hacia el resto de id_lang para cada id de producto. ¿Alguien tiene idea? Si encuentro la consulta ya podré actualizar también el resto de columnas (description, link_rewrite, etc..) cambiando el nombre de la columna en la consulta. Mil gracias de antemano! Edited January 18, 2020 by Pack_12 (see edit history) Link to comment Share on other sites More sharing options...
garciasanchezdani Posted January 17, 2020 Share Posted January 17, 2020 (edited) Buenos días @Pack_12 Una consulta como la siguiente te serviría: UPDATE `ps_product_lang` pl1, `ps_product_lang` pl2 SET pl1.`description` = pl2.`description`,pl1.`description_short` = pl2.`description_short`,pl1.`link_rewrite` = pl2.`link_rewrite`,pl1.`meta_title` = pl2.`meta_title`,pl1.`name` = pl2.`name` WHERE pl2.`id_lang`=1 AND pl1.id_product = pl2.id_product; No obstante, realiza antes un backup de tu tabla ps_product_lang. Espero que te ayude. Un saludo. Edited January 17, 2020 by garciasanchezdani (see edit history) 1 Link to comment Share on other sites More sharing options...
ventura Posted January 17, 2020 Share Posted January 17, 2020 Para estas cosas es buena practica crear una tabla temporal con los resultados según el criterio y luego hacer el update, eg CREATE TEMPORARY TABLE temp_products_lang AS SELECT * FROM ps_product_lang WHERE id_lang = 1; UPDATE ps_product_lang u LEFT JOIN temp_products_lang t ON t.id_product = u.id_product SET u.description = t.description, u.description_short = t.description_short, u.link_rewrite = t.link_rewrite, WHERE 1=1 No me cansare de comentar que siempre estas cosas es mejor hacerlas primero en un entorno de pruebas o después de haber hecho primero un respaldo de la base de datos o de la tabla en concreto donde se va a operar 2 Link to comment Share on other sites More sharing options...
Pack_12 Posted January 18, 2020 Author Share Posted January 18, 2020 Muchas gracias, muy útil la consulta y los consejos. Funcionó! 😊 Link to comment Share on other sites More sharing options...
infinityl Posted October 14, 2020 Share Posted October 14, 2020 (edited) Buenas chicos, llevo tiempo con la tienda en multiidioma y dándole vueltas al tema de las traducciones. Manejo algo de SQL pero lo que tengo en mente se me escapa. Pongo un ejemplo, yo tengo todos los productos con los nombres en español, ej: "Camiseta Vans Nombremodelo Color" Y quiero hacer el SQL como el que habeis comentado arriba para los demas idiomas pero que cambie el contenido dependiendo de unos filtros, como un buscar y reemplazar. Ejemplo, lo tengo en Español, y lo copio al campo del Aleman todo, y luego quiero cambiar todos los "Camiseta" por "Subanstrujenwagen" (como se diga camiseta en Aleman :D) pero que deje el resto de la cadena "Camiseta Vans Nombremodelo Color" igual para que quedase "Subanstrujenwagen Vans Nombremodelo Color". ¿Esto es posible con una consulta SQL? Cambiar el parcial de un texto por unas cadenas predefinidas? Si alguno me puede iluminar creo que sería de gran utilidad para toda la comunidad el poder traducir automáticamente los productos a todos los idiomas. Un saludo! Edited October 14, 2020 by infinityl (see edit history) Link to comment Share on other sites More sharing options...
garciasanchezdani Posted October 15, 2020 Share Posted October 15, 2020 Buenos días @infinityl Lo que comentas sí es posible. Utiliza una query como: UPDATE `ps_product_lang` SET `name` = replace(name, 'Camiseta', 'Subanstrujenwagen') WHERE `id_lang` = 2; En la query anterior, suponemos que el id_lang del idioma alemán es el 2. Tendrías que preparar y ejecutar entonces tantas queries como reemplazos quieras hacer. Un saludo. 1 Link to comment Share on other sites More sharing options...
infinityl Posted October 15, 2020 Share Posted October 15, 2020 12 hours ago, garciasanchezdani said: Buenos días @infinityl Lo que comentas sí es posible. Utiliza una query como: UPDATE `ps_product_lang` SET `name` = replace(name, 'Camiseta', 'Subanstrujenwagen') WHERE `id_lang` = 2; En la query anterior, suponemos que el id_lang del idioma alemán es el 2. Tendrías que preparar y ejecutar entonces tantas queries como reemplazos quieras hacer. Un saludo. Genial!! Pues es más facil de lo que pensaba!!! Mil gracias 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