MySQL - duda procedimiento de suma

 
Vista:
sin imagen de perfil
Val: 1
Ha disminuido su posición en 68 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

duda procedimiento de suma

Publicado por carlos (1 intervención) el 05/11/2018 10:04:08
hola que tal, y saludos a todos es la primara vez que publico, espero puedan apoyarme con un problemita que tengo con el sigueinte procedure, cuando actualizo un registro de la columna cantidad, de cualquier otra factura, el valor obtenido de la suma se borra.(los procedimientos los ejecuto en workbench)

lo que busco es sumar la cantidad de productos que hay en una factura que se encuentran en mi tabla detalle_factura, y el total de la cantidad de productos guardarlo en mi tabla factura


1
2
3
4
5
6
7
8
9
10
CREATE DEFINER=`root`@`localhost` PROCEDURE `newfactura`(x int)
BEGIN
	SET SQL_SAFE_UPDATES = 0;
	update factura
    set factura.total_producto= (select sum(detalle_factura.cantidad)
	from detalle_factura
    where factura.id_factura=detalle_factura.id_factura
	and factura.id_factura=x);
 
END

y supuse porque con el select lo unico que hago es hacer una consulta y lo deje asi

1
2
3
4
5
6
7
8
9
CREATE DEFINER=`root`@`localhost` PROCEDURE `newfactura`(x int)
BEGIN
	SET SQL_SAFE_UPDATES = 0;
	update factura
    set factura.total_producto= sum(detalle_factura.cantidad)
    where factura.id_factura=detalle_factura.id_factura
	and factura.id_factura=x;
 
END

al aplicar el procedure no hay problema, pero cuando invoco el procedure me arroja este error

02:55:36 call newfactura(2) Error Code: 1054. Unknown column 'detalle_factura.id_factura' in 'where clause' 0.000 sec

la tabla y columna existen

¿como puedo corregir el error? o ¿que tengo que modificar para que se quede guardado el registro y al actualizar otra factura no se borre el anterior?

espero puedan brindar su apoyo...GRACIAS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 21
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

duda procedimiento de suma

Publicado por Fabricio (7 intervenciones) el 10/11/2018 14:07:10
Buenas: El error es seguramente porque no estas utilizando un select en la 2da parte. En la 1ra tienes algun q otro error:

1
2
3
4
5
6
CREATE DEFINER=`root`@`localhost` PROCEDURE `newfactura`(in x int)
BEGIN
	update factura
             set total_producto= (select sum(cantidad) from detalle_factura where (id_factura=x))
             where (id_factura=x);
END

Espero te ayude. Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar