Ver Mensaje Individual
  #3 (permalink)  
Antiguo 01/05/2016, 19:54
pcid
Usuario no validado
 
Fecha de Ingreso: abril-2008
Mensajes: 50
Antigüedad: 16 años
Puntos: 16
Respuesta: Update de datos entre dos tablas

Te dejo un ejemplo sacado de la manga... A ver si acierto y resuelvo tu problema.

Saludos,

PCID.

Código MySQL:
Ver original
  1. -- Creación e inserción de datos para el ejemplo
  2. create table tabla1 (id_tabla1 int auto_increment, dni varchar(10), col1 varchar(100), col2 varchar(100), primary key (id_tabla1));
  3.  
  4. create table tabla2 (id_tabla2 int auto_increment, dni varchar(10), col100 varchar(100), col3000 varchar(100), col200 varchar(100), primary key (id_tabla2));
  5.  
  6.  
  7.  
  8. insert into tabla1 (dni, col1, col2)
  9.  
  10. values  ('11111A', 'TARARA', 'AAAA'),
  11.  
  12.         ('222222A', 'TERERERE', 'EEEE'),
  13.  
  14.         ('3333333A', 'TIRIRI', 'IIII');
  15.  
  16.        
  17.  
  18. insert into tabla2 (dni, col100, col3000, col200)
  19.  
  20. values  ('999999A', 'TOROROR NUEVO VALOR', 'COLUMNA QUE NO EXISTE EN TABLA1', 'OOOOOO'),       
  21.  
  22.         ('11111A', 'TARARA NUEVO VALOR', 'COLUMNA QUE NO EXISTE EN TABLA1', 'A REPETIDA'),
  23.  
  24.         ('222222A', 'TERERE NUEVO VALOR', 'COLUMNA QUE NO EXISTE EN TABLA1', 'E REPETIDA'),
  25.  
  26.         ('3333333A', 'TIRIRI NUEVO VALOR', 'COLUMNA QUE NO EXISTE EN TABLA1', 'I REPETIDA'),
  27.  
  28.         ('888888A', 'TURURU NUEVO VALOR', 'COLUMNA QUE NO EXISTE EN TABLA1', 'UUUUUU');
  29.  
  30. /*
  31. -- Contenido de tabla1
  32. ---------+------------+---------------------+------------------------------------------------
  33. id_tabla1 dni          col1                  col2
  34.  
  35. ---------+------------+---------------------+------------------------------------------------
  36.  
  37. 1         11111A       TARARA                AAAA
  38.  
  39. 2         222222A      TERERERE              EEEE
  40.  
  41. 3         3333333A     TIRIRI                IIII          
  42.  
  43.  
  44. -- Contenido de tabla2
  45. ---------+------------+---------------------+---------------------------------+--------------
  46. id_tabla2 dni          col100                col3000                           col200            
  47.  
  48. ---------+------------+---------------------+---------------------------------+--------------
  49. 1         999999A      TOROROR NUEVO VALOR   COLUMNA QUE NO EXISTE EN TABLA1   OOOOOO
  50.  
  51. 2         11111A       TARARA NUEVO VALOR    COLUMNA QUE NO EXISTE EN TABLA1   A REPETIDA
  52.  
  53. 3         222222A      TERERE NUEVO VALOR    COLUMNA QUE NO EXISTE EN TABLA1   E REPETIDA
  54.  
  55. 4         3333333A     TIRIRI NUEVO VALOR    COLUMNA QUE NO EXISTE EN TABLA1   I REPETIDA
  56.  
  57. 5         888888A      TURURU NUEVO VALOR    COLUMNA QUE NO EXISTE EN TABLA1   UUUUUU
  58.  
  59. */
  60.  
  61. update tabla1 a inner join tabla2 b on b.dni = a.dni set a.col1 = b.col100, a.col2 = b.col200;
  62.  
  63. /*
  64. -- Contenido de tabla1 después del UPDATE
  65. ---------+------------+---------------------+------------------------------------------------
  66. id_tabla1 dni          col1                  col2
  67. ---------+------------+---------------------+------------------------------------------------
  68.  
  69. 1         11111A       TARARA NUEVO VALOR    A REPETIDA
  70.  
  71. 2         222222A      TERERE NUEVO VALOR    E REPETIDA
  72.  
  73. 3         3333333A     TIRIRI NUEVO VALOR    I REPETIDA
  74.  
  75. */

Última edición por pcid; 01/05/2016 a las 19:58 Razón: Modificación de etiqueta [CODE] por [HIGHLIGHT = "MySQL"]