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

Update condicional

Estas en el tema de Update condicional en el foro de SQL Server en Foros del Web. Buenas, Tengo una tabla con un campo idPruebas, hay registros que son subpruebas de un idprueba principal. Necesito actualizar el estado de idprueba si todas ...
  #1 (permalink)  
Antiguo 31/03/2014, 06:15
 
Fecha de Ingreso: febrero-2011
Mensajes: 89
Antigüedad: 13 años, 2 meses
Puntos: 1
Update condicional

Buenas,

Tengo una tabla con un campo idPruebas, hay registros que son subpruebas de un idprueba principal.

Necesito actualizar el estado de idprueba si todas las subidpruebas estan finalizadas.

Intento agrupar los subpruebas por tarea principal si todas las subtareas estan finalizadas, finalizo la principal, con lo que antes de lanzar el update necesito evaluar que esten todas en este caso.

¿Alguna idea de como plantearlo?


Gracias,
  #2 (permalink)  
Antiguo 31/03/2014, 07:35
 
Fecha de Ingreso: abril-2012
Ubicación: Capital Federal
Mensajes: 283
Antigüedad: 12 años
Puntos: 15
Respuesta: Update condicional

Podes mostrar algunos datos de las tablas que tenes? Asi podemos armar bien la query

Saludos
  #3 (permalink)  
Antiguo 31/03/2014, 08:56
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 condicional

Cita:
Iniciado por maldini3783 Ver Mensaje
Buenas,

Tengo una tabla con un campo idPruebas, hay registros que son subpruebas de un idprueba principal.

Necesito actualizar el estado de idprueba si todas las subidpruebas estan finalizadas.

Intento agrupar los subpruebas por tarea principal si todas las subtareas estan finalizadas, finalizo la principal, con lo que antes de lanzar el update necesito evaluar que esten todas en este caso.

¿Alguna idea de como plantearlo?


Gracias,
???????????????????? si me lo explicas con renglones y columnas(y claro sus datos) te entenderia mejor y te podria ayudar :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 31/03/2014, 10:02
 
Fecha de Ingreso: febrero-2011
Mensajes: 89
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Update condicional

detallo un poco mas:
tabla1(idServicio,idSubservicio,idstate)
ej:

Código HTML:
IDServicio   IDServicioPadre   IDstate
 19792	         -1              1
 19793	       19792             5
 19794	       19792             7
De esta forma quiero actualizar el estado del servicioPadre(19792) a idstate=7, siempre y cuando el total de los servicios hijos esten o en estado 5 o estado 7.
Es decir si este servicio tiene 2 subservicios, y los 2 estan en cualquiera de los estados, me indica que efectivamente tengo que actualizar el idServicioPadre con idstate =7, esta condición es la que determinara que idServiciosPadre tendre que actualizar sus estados.

Muchas gracias.
  #5 (permalink)  
Antiguo 31/03/2014, 14:26
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 condicional

sencillo :P

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. id INT,
  4. padre INT,
  5. state INT
  6. )
  7.  
  8.  
  9.  INSERT INTO #temp VALUES (19792             ,-1              ,1)
  10.  INSERT INTO #temp VALUES (19793,          19792             ,5)
  11.  INSERT INTO #temp VALUES (19794,          19792             ,7)
  12.  INSERT INTO #temp VALUES (19799,          19792             ,7)
  13.  
  14.  INSERT INTO #temp VALUES (19795             ,-1              ,1)
  15.  INSERT INTO #temp VALUES (19796,          19795             ,5)
  16.  INSERT INTO #temp VALUES (19797,          19795             ,7)
  17.  INSERT INTO #temp VALUES (19798,          19795             ,8)
  18.  
  19.  
  20.  SELECT t3.padre FROM(
  21.  SELECT COUNT(t1.id) AS total,t1.padre FROM #temp AS t1
  22.  LEFT JOIN #temp AS t2 ON (t1.id=t2.padre) WHERE t1.padre<>-1 GROUP BY t1.padre
  23.  ) t3
  24.  LEFT JOIN
  25.  ( SELECT COUNT(*) total,padre FROM #temp WHERE state IN (5,7) AND padre<>-1 GROUP BY padre) AS t4 ON (t3.padre=t4.padre)
  26.  WHERE t3.total=t4.total

aqui se obtiene el padre que tiene los hijos en estado 5 y 7 si te fijas en los datos de ejemplo el query solo regresa el id 19792 porque tiene 2 hijos en 5 y 7 y el 19795 tiene 3 hijos 2 en 5 y 7 y uno en 8 :P, ademas tomo en cuenta que los padres son los que tienen el -1
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: campo, condicional, registros, tabla, 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 06:20.