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

actualizar y agregar de u na tabla a otra

Estas en el tema de actualizar y agregar de u na tabla a otra en el foro de Bases de Datos General en Foros del Web. Solicito una ayuda, poseo 2 tablas, una espejo de la segunda, mejor dicho una temporal y luego estos datos pasarian a la tabla real, pero ...
  #1 (permalink)  
Antiguo 09/03/2009, 15:22
 
Fecha de Ingreso: noviembre-2003
Mensajes: 403
Antigüedad: 21 años
Puntos: 4
actualizar y agregar de u na tabla a otra

Solicito una ayuda, poseo 2 tablas, una espejo de la segunda, mejor dicho una temporal y luego estos datos pasarian a la tabla real, pero me gustaria saber como hacer ingresar cualquier campo que no existe en la tabla real..

Me explico mejor... poseo esta tabla

tmp_table
nombre item
alejandro carro
carlos tuerca
manuel tijera
ricardo zapato


table
id nombre item
0 alejandro carro
1 carlos tuerca
2 manuel sacapuntas



entonces el codigo deberia cambiar(update) el item de manuel y agregar a ricardo

tengo realizado el de hacer update, con un inner join

Código:
UPDATE       usuario
SET					clientes.cliente = tmp_clientes.cliente,
					clientes.direccion = tmp_clientes.direccion, 
					clientes.vendedor = tmp_clientes.vendedor, 
                                        clientes.creacion = tmp_clientes.creacion
FROM            clientes INNER JOIN
                         tmp_clientes ON clientes.rif = tmp_clientes.rif
pero no logro hacer para la insesion de los datos que no se encuentran...
  #2 (permalink)  
Antiguo 09/03/2009, 18:25
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: actualizar y agregar de u na tabla a otra

Prueba:
Código sql:
Ver original
  1. UPDATE clientes INNER JOIN tmp_clientes ON clientes.rif = tmp_clientes.rif
  2. SET     clientes.cliente = tmp_clientes.cliente,
  3.         clientes.direccion = tmp_clientes.direccion,
  4.         clientes.vendedor = tmp_clientes.vendedor,
  5.         clientes.creacion = tmp_clientes.creacion;

Esa sería la forma normal de escribir un UPDATE con INNER JOIN. Ahora bien, esto cambiaría todos los registros donde haya coincidencias, más allá de si el item que se desea cambiar es "Manuel" por "Ricardo".
__________________
¿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 09/03/2009, 20:34
 
Fecha de Ingreso: noviembre-2003
Mensajes: 403
Antigüedad: 21 años
Puntos: 4
Respuesta: actualizar y agregar de u na tabla a otra

gracias por la ayuda, pues aun falta lo que mas me tiene con un mayor dolor de cabeza, que es agregar aquellos datos que no se encentren en la tabla fija
  #4 (permalink)  
Antiguo 10/03/2009, 02:31
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: actualizar y agregar de u na tabla a otra

Antes deberías aclararnos que es rif, si un identificador, numérico y autoincrement que coincide en ambas tablas o qué.
Mira esto: te permite añadir los que no están en otra tabla, pero yo no he tenido en cuenta ese rif, que si no es un autoincrement podrás añadir en la inserción
A) sin rif
insert into clientes (cliente, direccion, vendedor, creacion) select tc.cliente, tc.direccion, tc.vendedor, tc.creacion from tmp_clientes tc where tc.cliente not in (select c2.cliente from clientes c2)

B) con rif no auto_increment
insert into clientes (rif, cliente, direccion, vendedor, creacion) select tc.rif, tc.cliente, tc.direccion, tc.vendedor, tc.creacion from tmp_clientes tc where tc.cliente not in (select c2.cliente from clientes c2)

Tal vez incluso el campo indicado para hacer el where ... not in sea ese rif, pero deberías decirnos cuál es su naturaleza.
  #5 (permalink)  
Antiguo 10/03/2009, 05:48
 
Fecha de Ingreso: noviembre-2003
Mensajes: 403
Antigüedad: 21 años
Puntos: 4
Respuesta: actualizar y agregar de u na tabla a otra

el rif es el un numero asignado a las empresas de identificacionl, como el numero de seguro social, cedula de identidad, pasaporte, no es un numero autoincrementado, es un numero unico en la base de datos, ya que 2 empresas no pueden tener el mismo rif, y una empresa solo esta registrada 1 vez
  #6 (permalink)  
Antiguo 10/03/2009, 08:40
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: actualizar y agregar de u na tabla a otra

Entonces quizás te funcione algo así (no lo he probado):
insert into clientes (rif, cliente, direccion, vendedor, creacion) select tc.rif, tc.cliente, tc.direccion, tc.vendedor, tc.creacion from tmp_clientes tc where tc.rif not in (select c2.rif from clientes c2)

Esto copia en el archivo clientes los datos de registro de todos aquellos rif de tmp_clientes que no estén en clientes.
No sé qué versión de MySQL utilizas.
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:14.