Ver Mensaje Individual
  #5  
Antiguo 05-09-2003
Avatar de javiermorales
javiermorales javiermorales is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 272
Reputación: 22
javiermorales Va por buen camino
El problema me ha surgido, cuando debo actualizar los datos de una tabla basándome en la propia tabla. Es decir, tengo una tabla con los siguientes datos:
Código:
Codigo     Texto       Valor1     Valor2
   1         prueba1      32             12
   2         prueba2      31             11
   1                                             10
   3         prueba3      22             19
   2         prueba6      30             15
   1                                             17
Dados estos valores yo necesito actualizar todos los códigos que no tienen texto o valor con los datos de los que sí lo tienen y poseen el mismo código. Como puede verse también existen elementos con el mismo código, pero con valores diferentes.

Para solucionarlo, he utilizado la siguiente sentencia:
1.- Obtengo los códigos que no utilizaré en la actualización
Código:
(SQL1)
SELECT Codigo, Count(Codigo)
FROM Tabla
WHERE Valor1 Is Not Null
GROUP BY Codigo
HAVING Count(Codigo)>1
2.- Obtengo los datos para actualizar
Código:
(SQL2)
SELECT Codigo, Texto, Valor1
FROM Tabla LEFT JOIN SQL1 ON Tabla.Codigo = SQL1.Codigo
WHERE SQL1.Codigo Is Null
3.- Actualizo los datos de tabla con los de SQL2

Si todo esto lo realizo sin la ayuda de una tabla auxiliar, no podría actualizar los datos de tabla1, ya que estaría utilizando los propios datos de tabla1 para decidir cual debo actualizar. Es decir el típico problema de consulta no actualizable en el UPDATE.

Por esto es por lo que deseo utilizar los resultados que tengo en memoria como una tabla independiente.

Gracias. Un saludo.
Responder Con Cita