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

Ejemplos para un update

Estas en el tema de Ejemplos para un update en el foro de SQL Server en Foros del Web. Problemas con update Hola Disculpen, alguien puede orientarme como actualizar una tabla con estas condiciones: La tabla tiene tiene 1000 regsitro y 2 campos, con ...
  #1 (permalink)  
Antiguo 08/06/2012, 16:33
 
Fecha de Ingreso: marzo-2012
Mensajes: 17
Antigüedad: 12 años, 1 mes
Puntos: 0
Ejemplos para un update

Problemas con update
Hola

Disculpen, alguien puede orientarme como actualizar una tabla con estas condiciones:

La tabla tiene tiene 1000 regsitro y 2 campos, con datos asi:

CLIENTE | USUARIO
________________
0001 | user1
0001 | user2
0001 | user3
0002 | user1
0002 | user2
0002 | user3
0003 | user2
0003 | user3
0004 | user1
0004 | user2

.
.
.
9999 | user1
9999 | user2
9999 | user3

Eso es: un cliente puede tener muchos usuarios.
Bien entonces quiero cambiar todos los valores: user2 por user1; no puedo ejecutar un simple update porque LA TABLA NO PERMITE USUARIOS DUPLICADOS X CLIENTE, es decir, si lo hago con update queda

CLIENTE | USUARIO
________________
0001 | user1
0001 | user1
0001 | user3
0002 | user1
0002 | user1
0002 | user3
0003 | user1
0004 | user1 ////ESTA ESTA OK
0004 | user3
.
.
.
9999 | user1
9999 | user1
9999 | user3

En los casos que se den que el cliente tiene tanto a USER1 y a USER2, va quedar con duplicado USER1, y eso no puede ser.

Como puedo actualizar user2:

si hay cliente que tenga a user1 y user2, solo dejar user1.
si hay cliente que tenga a user2, cambiar a user1

Que usarian, having, if, etc... si me dan ideas de como realizarlo se los agradece muchisimo, espero alguien puedo ayudarme

Saludos
  #2 (permalink)  
Antiguo 09/06/2012, 09:30
 
Fecha de Ingreso: noviembre-2011
Mensajes: 48
Antigüedad: 12 años, 4 meses
Puntos: 5
Respuesta: Ejemplos para un update

Haber que tal te funciona esta idea, te recomiendo hacer la prueba en una temporal porq no lo he probado

Delete from tabla1 where usuario = 'user2' and cliente in (select cliente from tabla1 where usuario= 'user1')

y ya podrias hacer un update a los user2 por user1
update tabla1 set usuario = 'user1' where usuario='user2'

Espero haber entendido correctamente tu problema.
  #3 (permalink)  
Antiguo 11/06/2012, 08:51
 
Fecha de Ingreso: marzo-2012
Mensajes: 17
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Ejemplos para un update

Hola NullZ3r0:

eres mi salvador, he ejecutado como lo indicas, aunque como no tuve tiempo de sacar una tabla temporal lo hice como transaccion para "volver" si no era lo que queria, pero al parecer a simple vista ha quedado tal y como queria, son muchos registros pero los que he comprobado estan OK.

Muchas gracias, si hay que puntuar o dar mejor respuesta o algo asi, avisame me salvaste

!!!!!!!
  #4 (permalink)  
Antiguo 11/06/2012, 09:03
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Ejemplos para un update

Solo cambia el IN(), por EXISTS.......
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 11/06/2012, 09:10
 
Fecha de Ingreso: marzo-2012
Mensajes: 17
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Ejemplos para un update

cual seria la diferencia entre IN e EXISTS ???
  #6 (permalink)  
Antiguo 11/06/2012, 09:21
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Ejemplos para un update

PERFORMANCE (Tiempo de respuesta).....ya lo hemos platicado....(yo diria, que hasta el cansancio)
__________________
MCTS Isaias Islas
  #7 (permalink)  
Antiguo 11/06/2012, 09:31
 
Fecha de Ingreso: noviembre-2011
Mensajes: 48
Antigüedad: 12 años, 4 meses
Puntos: 5
Respuesta: Ejemplos para un update

iislas, como quedaria con Exists, he tratado de realizarlo y la verdad no he podido puedos ayudarnos convirtiendo esta instruccion.

Saludos!!!!

Dukker, podrias puntuar pero la verdad estoy aqui mas para aprender y si se puede ayudar en algun momento con mucho gusto.
  #8 (permalink)  
Antiguo 11/06/2012, 11:23
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Ejemplos para un update

DELETE FROM tabla1 t1 WHERE usuario = 'user2' and exists (select cliente from tabla1 t2 where t2.usuario = 'user1' and t2.id = t1.id)

¿Como lo estas haciendo?
__________________
MCTS Isaias Islas
  #9 (permalink)  
Antiguo 11/06/2012, 15:14
 
Fecha de Ingreso: noviembre-2011
Mensajes: 48
Antigüedad: 12 años, 4 meses
Puntos: 5
Respuesta: Ejemplos para un update

Lo que estaba realizando es muy similar

Delete from tabla1 where usuario = 'user2' and cliente exists (select cliente from tabla1 where usuario= 'user1')

No encuentro como funciona el Exists exactamente, no doy como hace la comparación o contra que, en tu ejemplo veo que utilizas un t2.id = t1.id, estos id deberian existir en la tabla, verdad?
  #10 (permalink)  
Antiguo 12/06/2012, 09:36
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Ejemplos para un update

Analiza bien la instruccion, ve los ALIAS (punto importante), despues de eso, si aun tienes dudas, nos dices.
__________________
MCTS Isaias Islas
  #11 (permalink)  
Antiguo 12/06/2012, 12:09
 
Fecha de Ingreso: noviembre-2011
Mensajes: 48
Antigüedad: 12 años, 4 meses
Puntos: 5
Respuesta: Ejemplos para un update

Gras Iislas, lo revise con un select quedando
Cita:
SELECT * FROM #temporal t1 WHERE usuario = 'user2' and exists (select t2.clliente from #temporal t2 where t2.usuario = 'user1' and t2.clliente = t1.clliente )
ya vi como ligar una tabla a otra, en el ejemplo del DELETE no me permite especificar ALIAS es esto correcto o es por la version de SQL, trabajo con SQL2008
Cita:
DELETE FROM #temporal t1 WHERE usuario = 'user2' and exists
(select clliente from #temporal t2 where t2.usuario = 'user1' and t2.clliente = t1.clliente)
Me marca error de syntaxis en el WHERE.

Saludos
  #12 (permalink)  
Antiguo 12/06/2012, 12:35
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Ejemplos para un update

un delete no lleva alias quedaria asi:


DELETE FROM #temporal WHERE usuario = 'user2' and exists
(select clliente from #temporal t2 where t2.usuario = 'user1' and t2.clliente = #temporal.clliente)


Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #13 (permalink)  
Antiguo 12/06/2012, 13:16
 
Fecha de Ingreso: noviembre-2011
Mensajes: 48
Antigüedad: 12 años, 4 meses
Puntos: 5
Respuesta: Ejemplos para un update

Iislas / Libras

Muchas gracias.

Saludos

Etiquetas: duplicados, group, sql, update, transacciones
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 15:02.