Hola Newtron
lo puedes hacer con dos sentencias, primero actualizas a 0 el stocks de los artículos que no tienen existencias y luego el stock de los que si tienen existencias:
Código SQL
[-]UPDATE ARTICULOS
SET EXISTT=0
WHERE NOT ARTICULOS.CODIGO IN (SELECT EXISTENCIAS.ARTICULO FROM EXISTENCIAS);
UPDATE ARTICULOS
SET EXISTT=(SELECT SUM(EXISTENCIA) FROM EXISTENCIAS WHERE (ARTICULOS.CODIGO=EXISTENCIAS.ARTICULO))
WHERE ARTICULOS.CODIGO IN (SELECT EXISTENCIAS.ARTICULO FROM EXISTENCIAS);
O si lo quieres hacer en una sola instrucción, en MySQL existe la funcion
IFNULL que establece un valor por defecto para cuando un campo es null, imagino que otros motores de BBDD tendran algo similar, si no siempre se puede utilizar el standar
CASE WHEN ... ELSE ... END y se puede hacer de esta forma:
Código SQL
[-]UPDATE ARTICULOS
SET EXISTT = ifNull((SELECT SUM(EXISTENCIA) FROM EXISTENCIAS WHERE (ARTICULOS.CODIGO=EXISTENCIAS.ARTICULO)), 0)
aquí tienes otra forma de plantear la consulta, la diferencia esta en el numero de consultas que realiza el motor de BD para ejecutar la sentencia. Comprueba con cual ganas mas en rendimiento, si con esta forma o con la anterior
Código SQL
[-]
UPDATE ARTICULOS
LEFT JOIN (
SELECT ARTICULO, SUM(EXISTENCIAS) AS STOCK
FROM EXISTENCIAS
GROUP BY ARTICULO
) STOCK ON STOCK.ARTICULO=ARTICULOS.CODIGO
SET ARTICULOS.EXISTT = ifNull(STOCK.stock, 0)
un saludo