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

copiar valores de campos de una tabla A a otra tabla B

Estas en el tema de copiar valores de campos de una tabla A a otra tabla B en el foro de Mysql en Foros del Web. hola foreros que tal, veran tengo un problema que no se ya como resolver por mas que busco no encuentro la respuesta veran: Necesito copiar ...
  #1 (permalink)  
Antiguo 01/11/2012, 12:56
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
copiar valores de campos de una tabla A a otra tabla B

hola foreros que tal, veran tengo un problema que no se ya como resolver por mas que busco no encuentro la respuesta veran:


Necesito copiar el valor de los campos 'nombre' e 'email' de la tabla_1, a los campos 'nombre' e 'email' en la tabla_2.


Ya que los dos campos estan repetidos en las dos tablas.

En una primera fase logro insertar en tabla_1, pero no consigo que despues se copien en un segundo paso, de ahí a la tabla_2.


Pero no quiero que en un mismo click de raton dandole al boton enviar del formulario me inserte estos valores de campos, simultaneamente a la vez en las dos tablas, eso no.


Espero que me puedan ayudar , mil gracias de antemano.
  #2 (permalink)  
Antiguo 01/11/2012, 13:46
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: copiar valores de campos de una tabla A a otra tabla B

No hay otra forma que no sea mandar dos sentencias instert. Eso se puede hacer con un solo click el click que ejecuta la primera sentencia que seguidamente ejecute la segunda.

Pero para que quieres guardar dos veces la misma información. No tiene ninguna justificacion en una bbdd bien diseñada.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 01/11/2012, 13:56
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
Respuesta: copiar valores de campos de una tabla A a otra tabla B

HOla quimfv, gracias por contestar veras.

Si tiene sentido, pero claro el proyecto que ando entre manos es demasiado grande como para explicar el por que lo hago en dos paso y no en uno.

Me llevaria mucho tiempo explicarlo y creo que tampoco da solucion al problema en si.


Veras en el transcurso desde que envie el anterior post mio con la duda, encontre esto:

Código SQL:
Ver original
  1. INSERT INTO tabla_2 (nombre_usuario, email)  
  2. SELECT * FROM tabla_1 WHERE id = '$id'


pero no me funciona, help!!



Última edición por gnzsoloyo; 01/11/2012 a las 14:17
  #4 (permalink)  
Antiguo 01/11/2012, 14:20
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: copiar valores de campos de una tabla A a otra tabla B

Eso te funcionaría si y sólo si tabla_1 tuviese dos campos y nada más...
Un INSERT ... SELECT... requiere que la cantidad de campos de destino sea siempre igual en cantidad y orden a los de origen, y eso no lo puedes asegurar si usas el asterisco, a menos que se cumpla lo que te digo al principio.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 02/11/2012, 07:35
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: copiar valores de campos de una tabla A a otra tabla B

Lo que te dice gnzsoloyo se traduce en que

Código MySQL:
Ver original
  1. INSERT INTO tabla_2 (nombre_usuario, email)  
  2. SELECT nombre_usuario, email FROM tabla_1 WHERE id = '$id'

esto si funcionará tenga los campos que tenga la tabla_1.

Lo que te decia yo es que

Código MySQL:
Ver original
  1. INSERT INTO tabla_1 SET nombre_usuario='el nombre', email="el@email";

seguido de

Código MySQL:
Ver original
  1. INSERT INTO tabla_2 SET nombre_usuario='el nombre', email="el@email";

Siempre serà mas rapido que el insert con la subconsulta.

Código MySQL:
Ver original
  1. INSERT INTO tabla_1 SET nombre_usuario='el nombre', email="el@email";
  2.  
  3. INSERT INTO tabla_2 (nombre_usuario, email)  
  4. SELECT nombre_usuario, email FROM tabla_1 WHERE id = '$id'


Insisto en que no tiene sentido guardar dos veces la misma información y ademas puede ser peligroso si en un momento no se hace lo mismo en las dos tablas... puede que dar incoherente

Código MySQL:
Ver original
  1. CREATE VIEW tabla_2 as SELECT nombre_usuario, email FROM tabla_1

Ejecutado una sola vez, incluso antes de insertar nada en tabla_1 te darà un objeto tabla_2 que siempre tendrá los mismos nombre_usuario e email que tenga tabla_1 sin necesidad de guardar dos veces la misma información ni necesidad de dar acceso a la tabla_1 que puede contener mas información.

Si borras algo de tabla_1 desaparecera de la vista y si modificas algo tambien se modificará en la vista.

Para consultar la vista es lo mismo que si fuera una tabla

Código MySQL:
Ver original
  1. SELECT * FROM tabla_2

Aun que tabla_2 sea una vista (view).

Lo normal es poner nombres que te digan si es una vista o una tabla, por ejeplo usar el prefijo "v_" para indicar que el objeto es una vista pero solo sirve para que el programador sepa que esta tocando....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 02/11/2012 a las 07:43

Etiquetas: campos, 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 09:25.