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

como pasar una columna de tabla1, a tabla2

Estas en el tema de como pasar una columna de tabla1, a tabla2 en el foro de Mysql en Foros del Web. Hola, mi pregunta es esa, como puedo pasar toda una columna de tabla1 a tabla2 ejemplo: tabla1: ---------------- nombre | -------------- www sss xxx tabla2: ...
  #1 (permalink)  
Antiguo 31/03/2011, 11:15
Avatar de omar_gutierrez  
Fecha de Ingreso: febrero-2011
Mensajes: 144
Antigüedad: 13 años, 2 meses
Puntos: 2
Pregunta como pasar una columna de tabla1, a tabla2

Hola, mi pregunta es esa, como puedo pasar toda una columna de tabla1 a tabla2

ejemplo:

tabla1:
----------------
nombre |
--------------
www
sss
xxx

tabla2:
----------------------
apellido | edad |
--------------------
wewq | 15
qwe | 30
fdds | 21

Resultado:

tabla2:
------------------------------------
nombre | apellido | edad |
------------------------------------
www | wewq | 15
sss | qwe | 30
xxx | fdds | 21
  #2 (permalink)  
Antiguo 31/03/2011, 12:01
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: como pasar una columna de tabla1, a tabla2

Buenas tardes omar_gutierrez:

en tu post no lo mencionas, pero me imagino que existe algún campo llave que relaciona tus dos tablas, si no es así, pues había que indicar qué criterio vas a aplicar para relacionar uno a uno tus registros. Para el ejemplo que voy a poner agregué una columna ID a las tablas que tiene las funciones de llave.

Código MySQL:
Ver original
  1. mysql> create table tabla1 (id int, nombre varchar(50));
  2. Query OK, 0 rows affected (0.08 sec)
  3.  
  4. mysql> insert into tabla1 values (1, 'www'),(2, 'sss'),(3, 'xxx');
  5. Query OK, 3 rows affected (0.03 sec)
  6. Records: 3  Duplicates: 0  Warnings: 0
  7.  
  8. mysql> select * from tabla1;
  9. +------+--------+
  10. | id   | nombre |
  11. +------+--------+
  12. |    1 | www    |
  13. |    2 | sss    |
  14. |    3 | xxx    |
  15. +------+--------+
  16. 3 rows in set (0.00 sec)
  17.  
  18. mysql> create table tabla2 (id int, apellido varchar(50), edad int);
  19. Query OK, 0 rows affected (0.09 sec)
  20.  
  21. mysql> insert into tabla2 values(1, 'wewq', 15),(2, 'qwe', 30),(3, 'fdds', 21);
  22. Query OK, 3 rows affected (0.03 sec)
  23. Records: 3  Duplicates: 0  Warnings: 0
  24.  
  25. mysql> select * from tabla2;
  26. +------+----------+------+
  27. | id   | apellido | edad |
  28. +------+----------+------+
  29. |    1 | wewq     |   15 |
  30. |    2 | qwe      |   30 |
  31. |    3 | fdds     |   21 |
  32. +------+----------+------+
  33. 3 rows in set (0.00 sec)
  34.  
  35. mysql> alter table tabla2 add (nombre varchar(50));
  36. Query OK, 3 rows affected (0.14 sec)
  37. Records: 3  Duplicates: 0  Warnings: 0
  38.  
  39. mysql> select * from tabla2;
  40. +------+----------+------+--------+
  41. | id   | apellido | edad | nombre |
  42. +------+----------+------+--------+
  43. |    1 | wewq     |   15 | NULL   |
  44. |    2 | qwe      |   30 | NULL   |
  45. |    3 | fdds     |   21 | NULL   |
  46. +------+----------+------+--------+
  47. 3 rows in set (0.00 sec)
  48.  
  49. mysql> update tabla1 T1 inner join tabla2 t2 set T2.nombre = T1.nombre
  50.     -> where T1.id = T2.id;
  51. Query OK, 3 rows affected (0.01 sec)
  52. Rows matched: 3  Changed: 3  Warnings: 0
  53.  
  54. mysql> select id, nombre, apellido, edad from tabla2;
  55. +------+--------+----------+------+
  56. | id   | nombre | apellido | edad |
  57. +------+--------+----------+------+
  58. |    1 | www    | wewq     |   15 |
  59. |    2 | sss    | qwe      |   30 |
  60. |    3 | xxx    | fdds     |   21 |
  61. +------+--------+----------+------+
  62. 3 rows in set (0.00 sec)

Esta es sólo una manera de hacer lo que quieres, también podrías crear una tabla temporal, eliminar la tabla2 y finalmente renombrar la tabla temporal, pero si tienes constraints puedes tener problemas.

Dale un vistazo a ver si te sirve el código.

Saludos
Leo.
  #3 (permalink)  
Antiguo 31/03/2011, 12:06
Avatar de omar_gutierrez  
Fecha de Ingreso: febrero-2011
Mensajes: 144
Antigüedad: 13 años, 2 meses
Puntos: 2
Respuesta: como pasar una columna de tabla1, a tabla2

Cierto, olvide poner la llave, le hechare un ojo.

Es cierto lo que mencionas hay mas formas de hacerlo, pero la verdad no les entendia muy bien, y ademas los ejemplos no estaban en mysql, tengo entendido que tienen la misma sintaxis, pero pueda variar. En fin, gracias por tu respuesta.
  #4 (permalink)  
Antiguo 31/03/2011, 12:32
Avatar de omar_gutierrez  
Fecha de Ingreso: febrero-2011
Mensajes: 144
Antigüedad: 13 años, 2 meses
Puntos: 2
Respuesta: como pasar una columna de tabla1, a tabla2

Hay algo que no comprendo muy bien:

Cita:
UPDATE tabla1 T1 INNER JOIN tabla2 t2 SET T2.nombre = T1.nombre
-> WHERE T1.id = T2.id;
Entiendo que hace la linea, pero las "T", para que son? por qué hay una T en minuscula "t2", tantas "T" me confunden, son referencia?
  #5 (permalink)  
Antiguo 31/03/2011, 12:37
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: como pasar una columna de tabla1, a tabla2

Son alias de las tablas.
¿Nunca has usado alias para simplificar su invocación y no tener que escribir nombres demasiado largos en un SELECT?
Bueno, es lo mismo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 31/03/2011, 12:38
Avatar de omar_gutierrez  
Fecha de Ingreso: febrero-2011
Mensajes: 144
Antigüedad: 13 años, 2 meses
Puntos: 2
Respuesta: como pasar una columna de tabla1, a tabla2

Cita:
Iniciado por omar_gutierrez Ver Mensaje
Hay algo que no comprendo muy bien:



Entiendo que hace la linea, pero las "T", para que son? por qué hay una T en minuscula "t2", tantas "T" me confunden, son referencia?
Ok, creo que ya le entendi:

tabla1 T1 INNER JOIN tabla2 t2

es para abreviar el nombre de la tabla? tabla1=T1, tabla2=T2
  #7 (permalink)  
Antiguo 31/03/2011, 13:08
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: como pasar una columna de tabla1, a tabla2

Exactamente, tal como lo menciona el compañero gnzsoloyo, T1 y T2 son alias, me extraña que no sepas de que se tratan, pues esto es un tema básico en SQL. Te recomiendo que le des un vistazo a la ayuda en línea:

Cita:
Una referencia de tabla puede tener un alias usando tbl_name AS alias_name o tbl_name alias_name:

mysql> SELECT t1.name, t2.salary FROM employee AS t1, info AS t2
-> WHERE t1.name = t2.name;

mysql> SELECT t1.name, t2.salary FROM employee t1, info t2
-> WHERE t1.name = t2.name;
Saludos
Leo.

Etiquetas: columna, pasar, tablas
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 20:06.