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.