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

Como actualizo varios registros al mismo tiempo??

Estas en el tema de Como actualizo varios registros al mismo tiempo?? en el foro de Bases de Datos General en Foros del Web. Hola! quiero ver si me pueden ayudar, tengo un problema para actualizar varios registros, lo que quiero hacer es lo siguiente: UPDATE [tabla] set campo='A' ...
  #1 (permalink)  
Antiguo 29/09/2004, 10:06
 
Fecha de Ingreso: enero-2003
Mensajes: 24
Antigüedad: 21 años, 3 meses
Puntos: 0
Pregunta Como actualizo varios registros al mismo tiempo??

Hola! quiero ver si me pueden ayudar, tengo un problema para actualizar varios registros, lo que quiero hacer es lo siguiente:

UPDATE [tabla] set campo='A' where campo='B' and campo2='Enero'
UPDATE [tabla] set campo='B' where campo='C' and campo2='Enero'
UPDATE [tabla] set campo='C' where campo='A' and campo2='Enero'

El problema es q esos UPDATE's deben hacerse al mismo tiempo para q no afecte el cambio en los primeros update's ya q si cambio el campo 'B' a 'A' y luego 'C' a 'B' ahi todavia no hay problema pero al actualizar la 'C' en los campos q tienen 'A' me cambiaria todos los registros, incluyendo los q acabo de actualizar y yo quiero q solo cambie los registros viejos. Espero me entiendan.

Se que se podria hacer con if's pero no me sé la sintaxis, haber si alguien me puede ayudar, o con un CASE o no se, algo para hacerlo solo una vez.

Ahh, esta base está en SQL

Muchas gracias

  #2 (permalink)  
Antiguo 29/09/2004, 12:18
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
Puedes hacerlo usando una tabla de conversión y usando una subquery. Me explico.
Tabla temporal con estos datos
origen, destino
B A
C B
A C
si ahora haces:
update tabla
set campo= (select destino from tabla_conversion where origen=tabla.campo)
where campo2 ="Enero" and campo in ("A","B","C")

Con el case/if, depende de que el gestor te permita usarlo en los updates. Claro que en esta opción, también dependes de que te permita usar la subquery.
Un saludo.
  #3 (permalink)  
Antiguo 29/09/2004, 12:41
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
Con el CASE puedes probar a hacerlo así (en mysql).
Código:
update tabla
set campo = (case campo where "B" then "A" when "C" then "B" when "A" then "C" END)
where campo2 ="Enero" and campo in ("A","B","C")
Un saludo.
  #4 (permalink)  
Antiguo 29/09/2004, 14:44
 
Fecha de Ingreso: enero-2003
Mensajes: 24
Antigüedad: 21 años, 3 meses
Puntos: 0
De acuerdo

Muchas gracias, lo hice con una tabla temporal y si funciono!!!!!!!, gracias, me salvaste de tardarme mas tiempo haciendo esto.

Saludos!!!

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 07:08.