[ Foro de SQL (y MySQL) ]

Problema con un INNER JOIN en UPDATE

26-Sep-2020 23:39
Sergio Pérez
0 Respuestas

 Hola:

       A ver si nos podéis echar una manita, que nos estamos volviendo locos. Tenemos un problema con las descripciones de los productos en un sistema de Prestashop.  Trabajamos bajo MySQL.

     El caso es que tenemos que conseguir copiar los campos description y description_short en todos los registros cuyo campo id_lang sea distinto a 1, tomándolo los valores de la misma tabla y de los mismos campos (description y description_short) en los registros cuyo campo id_lang sí sea 1 (todo en la misma tabla).

Hemos creado una sentencia que en un principio, probada con un SELECT, sí que funciona, pero que cuando la probamos con UPDATE, nos da un error, y no sabemos donde estamos metiendo la pata. La sentencia es:

UPDATE tabla
SET tabla.`description` = tabla2.`description`, tabla.`description_short` = tabla2.`description_short`
FROM 'ps_product_lang' tabla
INNER JOIN 'ps_product_lang' tabla2
ON tabla.`id_product` = tabla2.`id_product`
AND tabla2.`id_lang` = '1'
AND tabla.`id_lang` <> '1'

El error que nos da es #1064 - Algo está equivocado en su sintax cerca 'FROM 'ps_product_lang' tabla
INNER JOIN 'ps_product_lang' tabla2
ON tabla...' en la linea 2

La línea 2 es "FROM 'ps_product_lang' tabla" .... pero no sabemos donde nos equivocamos. ¿Alguien puede ayudarnos? Seguro que es una tontería nuestra, pero ya no controlamos.

    La estructura de la tabla es:

id_product                                     int(10)                                Primaria
id_shop                                          int(11)                                Primaria
id_lang                                     int(10)                                PrimariaÍndice
description                                text
description_short                text
link_rewrite                                varchar(128)
meta_description                varchar(512)
meta_keywords                        varchar(255)
meta_title                                varchar(128)
nameÍndice                                varchar(128)
available_now                        varchar(255)
available_later                        varchar(255)
delivery_in_stock                varchar(255)
delivery_out_stock                varchar(255)


Gracias y un saludo.




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)