Cita:
Iniciado por matanga Para actualizar una tabla en función de los valores de otra tabla tienes la sintaxis
update from, por ejemplo:
Código:
update clientes
set cl_estatus = 2
from (
select
ventas_generales.vg_cte
from
ventas_generales inner join ventas_det
on ventas_generales.vg_folio = ventas_det.vd_folio
group by ventas_generales.vg_cte
having sum(ventas_det.vd_precio * ventas_det.vd_cant) > 500
) t
where clientes.cte = t.vg_cte
Saludos
Muchas gracias por tu respuesta! te comento que mientras intentaba buscar una solucion hice algo similar a lo que me acabas de dar... solo que primera vez que veo el HAVING con el SUM, así me quedo ayer :
USE VENTAS
GO
ALTER PROCEDURE SP_VENTAS2
@OPCION AS TINYINT
AS
BEGIN
IF (@OPCION=1)
BEGIN
IF (SUM (vd_precio * vd_cant > 500)
BEGIN
UPDATE clientes SET cl_estatus=2 from ventas_generales
INNER JOIN clientes ON vg_cte = cl_cve
INNER JOIN ventas_det ON vg_folio = vd_folio
WHERE cl_estatus=1 and SUM (vd_precio * vd_cant)>500
END
END
ELSE
BEGIN
SELECT ('Valor fuera de rango') as Mensaje
END
END
me sigue saliendo el error :
Mens 102, Nivel 15, Estado 1, Procedimiento SP_VENTAS2, Línea 8
Sintaxis incorrecta cerca de '>'.
osea me marca error en "IF (SUM (vd_precio * vd_cant > 500)" ... segun yo, primero debo poner esa condicion, si las ventas totales de todos los clientes es mayor a 500 entonces se hara el update, si no es pues no actualiza el estatus del cliente, estoy retrasada por esa sintaxis incorrecta.
acabo de poner lo del having sum...
USE VENTAS
GO
ALTER PROCEDURE SP_VENTAS2
@OPCION AS TINYINT
AS
BEGIN
IF (@OPCION=1)
BEGIN
IF (HAVING SUM (vd_precio * vd_cant)>500 )
BEGIN
UPDATE clientes SET cl_estatus=2 from ventas_generales
INNER JOIN clientes ON vg_cte = cl_cve
INNER JOIN ventas_det ON vg_folio = vd_folio
WHERE cl_estatus=1 and HAVING SUM (vd_precio * vd_cant)>500
END
END
ELSE
BEGIN
SELECT ('Valor fuera de rango') as Mensaje
END
END
me sale esto :
Mens 156, Nivel 15, Estado 1, Procedimiento SP_VENTAS2, Línea 8
Sintaxis incorrecta cerca de la palabra clave 'HAVING'.
Mens 156, Nivel 15, Estado 1, Procedimiento SP_VENTAS2, Línea 13
Sintaxis incorrecta cerca de la palabra clave 'HAVING'.
... Perdonen la molestía con esto, me agrada mucho mysql y lo que se relaciona con base de datos, tal vez esto sea algo muy facil pero, se me ha complicado un poco esto, no había tenido problemas hasta ahora..