Bases de Datos - Operaciones aritméticas entre tablas de una BD

 
Vista:
sin imagen de perfil
Val: 5
Ha disminuido su posición en 7 puestos en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Operaciones aritméticas entre tablas de una BD

Publicado por C (3 intervenciones) el 10/10/2019 06:28:57
Hola, estoy desarrollando una BD para un sistema transaccional, tengo una tabla llamada producto (id_producto, stock_producto y precio_producto), tengo otra tabla llamada detalles_factura (id_detalles, id_producto, id_factura, cantidad, subtotal_producto); El valor de subtotal_producto lo debo obtener multiplicando el precio_producto de la tabla producto con la cantidad que se digita en la tabla detalles_factura.

¿Cómo hago para realizar esta multiplicación teniendo en cuenta que el valor que obtenga sea la multiplicación únicamente de la cantidad del detalle*precio?

Tengo este código, el cual funciona, pero cuando existen mas detalles falla, y no me genera el valor individual de cada detalle.

1
2
3
4
SELECT SUM(productos.precio * detalle_venta.cantidad) FROM productos
INNER JOIN detalle_venta
ON (productos.id_producto = detalle_venta.id_factura)
WHERE detalle_venta.cantidad>0

Muchas gracias, espero pronta respuesta.
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
Imágen de perfil de Francisco
Val: 107
Bronce
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Operaciones aritméticas entre tablas de una BD

Publicado por Francisco (33 intervenciones) el 10/10/2019 20:12:49
Hola


Aparentemente hay un error aqui

1
(productos.id_producto = detalle_venta.id_factura)

Intenta esto

1
2
3
4
5
6
7
8
SELECT
	dv.id_factura,
	SUM(p.precio * dv.cantidad)
FROM productos p
	INNER JOIN detalle_venta dv
		ON p.id_producto = dv.id_producto)
WHERE dv.cantidad > 0
GROUP BY dv.id_factura

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 5
Ha disminuido su posición en 7 puestos en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Operaciones aritméticas entre tablas de una BD

Publicado por C (3 intervenciones) el 15/10/2019 02:53:16
Muchas gracias, este fragmento me funcionó perfectamente. Tengo una tabla que se llama factura(id_fac, total_fac) , los datos que acabé de calcular a partir de las sentencias que me diste necesito actualizarlos en el campo total_fac. ¿esto de qué manera lo realizo?.

Ya que al momento que realizo la consulta me aparece como campo calculado momentáneamente, pero necesito que estos valores sean actualizados en el campo que ya mencioné de la tabla factura de mi BD.

Muchísimas gracias por su colaboración.
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
Imágen de perfil de Francisco
Val: 107
Bronce
Ha mantenido su posición en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

Operaciones aritméticas entre tablas de una BD

Publicado por Francisco (33 intervenciones) el 15/10/2019 15:39:54
Hola

Con la ayuda de un CTE y un UPDATE se resuelve el problema

1
2
3
4
5
6
7
8
9
10
11
12
13
WITH t AS (
    SELECT
        dv.id_factura,
        SUM(p.precio * dv.cantidad) total_factura
    FROM productos p
        INNER JOIN detalle_venta dv
            ON p.id_producto = dv.id_producto)
    WHERE dv.cantidad > 0
    GROUP BY dv.id_factura
)
UPDATE factura SET total_fac = t.total_factura
    FROM factura f
        INNER JOIN t ON f.id_fac = t.id_factura;

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