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

Hacer update con condición dinámica

Estas en el tema de Hacer update con condición dinámica en el foro de SQL Server en Foros del Web. tengo una tabla con varios campos, a la cual le quiero hacer un update pero este update lo que tiene que hacer es cambiar los ...
  #1 (permalink)  
Antiguo 22/06/2007, 11:49
 
Fecha de Ingreso: febrero-2007
Mensajes: 182
Antigüedad: 17 años, 3 meses
Puntos: 0
Hacer update con condición dinámica

tengo una tabla con varios campos, a la cual le quiero hacer un update

pero este update lo que tiene que hacer es cambiar los campos que tengan el valor '1' por el valor '0'

por ej:
la tabla tiene los campos:

Campo1 ='1'
Campo2 ='2'
Campo3 ='2'
Campo4 ='1'

entonces en este caso campo1 y campo4 serían cambiados a 0
agradezco cualquier ayuda

Martín
  #2 (permalink)  
Antiguo 24/06/2007, 19:04
Avatar de Gabo77  
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 17 años, 5 meses
Puntos: 6
Re: Hacer update con condición dinámica

Prueba esto..... observa que no tiene condicion de WHERE por lo que barrera toda la tabla.... Saludos!
Código:
UPDATE MiTabla
SET Campo1 = CASE Campo1 WHEN '1' THEN '0' ELSE Campo1,
Campo2 = CASE Campo2 WHEN '1' THEN '0' ELSE Campo2,
.
.
.
Campon = CASE Campo1 WHEN '1' THEN '0' ELSE Campon
  #3 (permalink)  
Antiguo 25/06/2007, 04:49
 
Fecha de Ingreso: febrero-2007
Mensajes: 182
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Hacer update con condición dinámica

exacto, pero no es eso lo que quiero

quiero que es un sólo registro, se fije en todos los campos (que son 65)
y si algún campo de ese registro vale '1' lo actualice a '0'
  #4 (permalink)  
Antiguo 26/06/2007, 14:59
Avatar de Gabo77  
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 17 años, 5 meses
Puntos: 6
Re: Hacer update con condición dinámica

Pos le pones los 65 campos.... es talacha, pero a menos que te quieras meter con tablas de sistema para determinar la cantidad de campos de tu tabla de manera dinámica

Saludos!
__________________
Hicimos un pacto con Dios... El no desarrolla Sistemas y nosotros no hacemos milagros....
  #5 (permalink)  
Antiguo 26/06/2007, 19:36
 
Fecha de Ingreso: febrero-2007
Mensajes: 182
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Hacer update con condición dinámica

exacto eso es lo que quiero, mirá me voy a extender un poco para dejar mi duda:

tengo una tabla "Encuesta" que tiene más de 60 campos, con respuestas, estás respuestas van del 1 al 10, y pueden tener el valor "NS/NC"

la tabla tiene todos los campos de las respuestas de la encuesta y el id del cliente

entonces lo que quiero es que en un stored procedure, que reciba como parametro de entrada el id del cliente

me actualice sólo el registro de este cliente (que es único, ya que id cliente es primary key) de tal manera que los campos de ese registro que tengan como valor "NS/NC" los cambie por "11"

ya sé que se puede hacer un update set....etc..pero escribiría como 70 lineas de código, anda si es cierto, pero quiero algo más eficaz, me gusta escribir código en 2 lineas y que haga lo mismo que hace otro en 100 lineas.. creo que es la idea de todos

mi duda un poco con lo que tu planteas muy correctamente es:

existe la posibilidad de que exista "TIPO" siendo "TIPO" lo siguiente:

///////
create procedure CrearEncuesta(@cliente...)..
...
declare Columna "TIPO"
update Encuesta set Columna = '11' where idcliente=@cliente
.....
.....
.....
//////

"TIPO" Sería como un tipo de variable que caracteriza a las columnas...
estoy trabajando con sql server 2000
gracias por todo
Martin
  #6 (permalink)  
Antiguo 27/06/2007, 11:00
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 5 meses
Puntos: 38
Re: Hacer update con condición dinámica

El nombre de las columnas es diferente en cada caso?

o es un consecutivo?
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #7 (permalink)  
Antiguo 27/06/2007, 14:55
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Re: Hacer update con condición dinámica

Si tienes manera de separarlas del resto de las columnas entonces puedes aprovechar los information schemas.

SELECT * FROM information_schema.columns WHERE table_name = 'mitabla'

Con eso armas los campos de la sentencia dinámicamente. Aunque te aseguro que serán más de 2 líneas resultantes.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
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 08:03.