Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/04/2008, 00:33
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Re: update if isnull

Cita:
Iniciado por xcars Ver Mensaje
saludos, creo que me he atorado en algo que aparentemente es simple, tengo el siguiente update

Código:
update fsv_pagos_oficiales a, fsv_pagos_no_oficiales b
set a.codemp=if(isnull(b.codemp),b.codemp,51)
where a.prestamo_id=b.prestamo_id



es simple, en la tabla llamada fsv_pagos_no_oficiales hay una lista de pagos que contiene un emplado asignado (codemp)
y fsv_pagos_oficiales no tiene este dato default, por lo cual antes de generar algunos reportes deseo que todos aquellos campos que si tengan un codemp en la tabla fsv_pagos_no_oficiales se actualicen con este codemp, y a todas los demas pagos, asignarles el codemp 51.

mas que obvio el codigo esta mal, ya que al poner esta linea
where a.prestamo_id=b.prestamo_id

me esta considerando solo las coincidencias entre ambas tablas, pero yo necesito considerar todo, y las que existan que les ponga el dato correspondiente y las que no les ponga 51, intentare con EXISTS pero si alguien me hehca la mano, se lo agradecere mucho.
saludos


Creo que lo que quieres puedes hacerlo en una sola tabla. Imagina que la tabla donde tienes los nulos se llama t2 y el campo campot2
UPDATE `t2` SET campot2 = 51 WHERE campot2 IS NULL

pero comprueba siempre antes haciendo un select

SELECT * FROM t2 WHERE campot2 IS NULL

Si va bien y te muestra los que quieres cambiar, haz el UPDATE...

Eso te cambiará todos los nulos de esa tabla por 51.

A ver si es esto lo que quieres.

Última edición por jurena; 26/04/2008 a las 02:48 Razón: solución más fácil