Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] Pasar una tabla a otra

Estas en el tema de Pasar una tabla a otra en el foro de Mysql en Foros del Web. Buenas, Recurro a este magnifico dado mi escaso conocimiento del tema. Tengo dos tablas productos y marcas. En la tabla productos, existe una relacion con ...
  #1 (permalink)  
Antiguo 10/05/2015, 12:49
Avatar de carscx  
Fecha de Ingreso: noviembre-2008
Mensajes: 227
Antigüedad: 16 años
Puntos: 10
Exclamación Pasar una tabla a otra

Buenas,

Recurro a este magnifico dado mi escaso conocimiento del tema.

Tengo dos tablas productos y marcas.

En la tabla productos, existe una relacion con la tabla marcas, la cual funciona bien.

El problema viene cuando del sistema antiguo hago la importacion de datos, que no estaban relacionadas.

Entonces en la tabla productos tengo lo siguiente

id_producto,nombre_producto,id_marca,nombre_marca_ old(Este lo guarde para saber a que marca corresponde cada producto)

La tabla marcas es solo id_marca, nombre_marca

Buscando en el foro, no he sabido implementar una solucion que se daba en un post similar.

Código SQL:
Ver original
  1. UPDATE productos SET id_marca = (SELECT p.nombre_marca_old,m.id_marca, m.nombre_marca FROM productos p,marcas m WHERE p.nombre_marca_old = m.nombre_marca)

El error que devuelve eso es el siguiente:

Código Error:
Ver original
  1. Error de SQL(1093): You can't specify target table 'productos' for update in FROM clause

NOTA: Estoy usando HeidiSQL como gestor de bases de datos.
__________________
Frontend Developer
JS+HTML5+CSS3
Backend Developer
PHP+MySQL
  #2 (permalink)  
Antiguo 10/05/2015, 13:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Pasar una tabla a otra

MySQL no admite que realices operaciones DML sobre la misma tabla del trigger en ejecución. Eso es básico.
El trigger no puede contener updates, deletes o inserts sobre la propia tabla. Para hacer tal tarea necesitarías hacerlo en un Stored Procedure.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 10/05/2015, 13:06
Avatar de carscx  
Fecha de Ingreso: noviembre-2008
Mensajes: 227
Antigüedad: 16 años
Puntos: 10
Respuesta: Pasar una tabla a otra

Encontre como hacerlo en

http://isaacsalgado.com/2011/11/24/m...on-inner-join/

Me apresure a postear, la consulta que me lo soluciono fue la siguiente:

Código MySQL:
Ver original
  1. UPDATE productos p
  2. INNER JOIN marcas m ON p.nombre_marca_old = m.nombre_marca
  3. SET p.id_marca = m.id_marca

Saludos!
__________________
Frontend Developer
JS+HTML5+CSS3
Backend Developer
PHP+MySQL

Etiquetas: select, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:03.