Actualizar si condición

10/01/2008 - 17:04 por Martin | Informe spam
Buenas a todos.

Ante todo quisiera agradecerles por el tiempo que inviertan en leer este post.

Tengo una estructura de tres tablas:

T1:
idT1
estado (cuyo valor inicial es "L")

T2:
idT1
idT2

T3:
idT1
idT2
idT3

Utilizaré el término "padre" para referirme a T1, "hijo" a T2 y "nieto" a T3
(a lo mejor, no es lo correcto, pero creo que me ayudará a explicarme mejor).

Como pueden ver, un "padre" puede tener varios hijos y nietos. El problema
está en que debo cambiar el atributo "estado" a "padre" sí y sólo sí tiene
POR LO MENOS UN nieto por cada hijo y que el estado sea diferente de "F".

Quiero evitar el uso de cursores para recorrer cada hijo y hacer un "select
count(*)" por cada hijo en la tabla "nieto".

A lo mejor es un problema sencillo. Sólo puedo decir en mi defensa que soy
nuevo en esto, aunque quizás eso no sea excusa.

Repito, agradezco a quienes se hayan tomado la molestia de leer este post.

Buen día a todos.

Preguntas similare

Leer las respuestas

#6 Alejandro Mesa
11/01/2008 - 03:14 | Informe spam
Hola Martin,

Si, la solucion posteada por Jesús es correcta. Aqui tienes otra version.

UPDATE T1
SET estado = 'nuevo-estado'
FROM T1
WHERE
estado != 'F' AND
(
SELECT COUNT(*)
FROM T2
WHERE T2.idT1 = T1.id
) = (
SELECT COUNT(DISTINCT T2.IdT1)
FROM T2 INNER JOIN T3 ON T3.IdT2 = T2.id
WHERE T2.idT1 = T1.id
)


AMB


"Martin" wrote:

> Que pasa si un padre tiene 2 hijos, pero solo uno de ellos tiene
> descendientes, se considera la fila en T1 como "padre" si o no?

Sí, se consideraría a la fila en T1 como padre, pero un padre al cual no se
le puede cambiar el estado.

Creo la solución la planteó Jesús Lopez. Ahora mismo estoy tratando de
adecuarlo al problema real.

Gracias por invertir tu tiempo en leer mi post.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida