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

Update multiple

Estas en el tema de Update multiple en el foro de SQL Server en Foros del Web. Saludos comunidad, tengo una duda, veran tengo la siguiente consulta: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT cp . nombre , cp . id_depto , ...
  #1 (permalink)  
Antiguo 27/11/2012, 13:05
 
Fecha de Ingreso: junio-2012
Mensajes: 90
Antigüedad: 11 años, 11 meses
Puntos: 2
Update multiple

Saludos comunidad, tengo una duda, veran tengo la siguiente consulta:

Código SQL:
Ver original
  1. SELECT cp.nombre,cp.id_depto,cp.id_ref_externa,p.id_personal,p.nombre,p.id_depto
  2.  FROM corporativodb.dbo.corp_personal cp
  3.  INNER JOIN transmaquiladb.dbo.personal_personal p ON p.nombre=cp.nombre
  4.  WHERE cp.estatus_personal=1 AND p.estado='A'

Me trae resultados como estos:



Como pueden ver, hay 2 grupos de ID'S de departamentos, me gustaría que todos los id_depto del GRUPO 1 (Marcado con numero en rojo) se copiaran (con UPDATE) a los del grupo 2, claro esta en una sola consulta ya que son mas de 240 registros quedando exactamente en la misma posición para no batallar, eh visto algunos ejemplos con subconsultas pero aun no doy con la consulta adecuada, sobre todo que no quiero arriesgarme ya que es un UPDATE delicado
  #2 (permalink)  
Antiguo 27/11/2012, 13:17
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: Update multiple

Puede ser algo asi:

Código SQL:
Ver original
  1. UPDATE TABLE
  2. SET id_depto=t1.id_depto
  3. FROM
  4. (
  5.     SELECT cp.id_depto  FROM corporativodb.dbo.corp_personal cp
  6.      INNER JOIN transmaquiladb.dbo.personal_personal p ON p.nombre=cp.nombre
  7.      WHERE cp.estatus_personal=1 AND p.estado='A'
  8. ) AS t1 WHERE TABLE.idpersonal IN (    SELECT p.idpersonal  FROM corporativodb.dbo.corp_personal cp
  9.      INNER JOIN transmaquiladb.dbo.personal_personal p ON p.nombre=cp.nombre
  10.      WHERE cp.estatus_personal=1 AND p.estado='A')

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 27/11/2012, 16:20
Avatar de Gabo77  
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 17 años, 5 meses
Puntos: 6
Respuesta: Update multiple

O así...

Código SQL:
Ver original
  1. UPDATE CP.Nombre = P.Nombre
  2.     CP.Id_Ref_Externa = P.Id_Personal
  3.     CP.Id_Depto = P.Id_Depto
  4. FROM corporativodb.dbo.corp_personal cp
  5. INNER JOIN transmaquiladb.dbo.personal_personal p
  6.     ON p.nombre = cp.nombre
  7. WHERE cp.estatus_personal = 1
  8.     AND p.estado = 'A'

Puede ser?

Saludos!
__________________
Hicimos un pacto con Dios... El no desarrolla Sistemas y nosotros no hacemos milagros....

Etiquetas: registro, select, update
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 04:44.