SQL - Resta de SUM de tablas tablas diferentes

 
Vista:

Resta de SUM de tablas tablas diferentes

Publicado por José (7 intervenciones) el 10/03/2019 00:37:46
Hola, quiero hacer una resta de dos sum, hacer un sum de la columna precio de la tabla productos y restarla al sum de la columna abono de la tabla Abono. Pero al hacer esto, al hacer el sum me da resultados muy diferentes al que me debe de dar.

1
2
SELECT p.Id_cliente, sum(p.precio), sum(a.Abono), SUM(p.precio)-SUM(a.Abono) AS resta FROM  productos p,abono a WHERE p.Id_cliente=a.Id_cliente
GROUP BY p.Id_cliente;

Esto me muestra lo siguiente:

Id_cliente-- sum(p.precio)-- sum(a.Abono)-- resta
2 --156 -- 20 --116
1 --50 -- 20 --30

Para el cliente 2 el sum del precio debería ser =52 y el del abono=10.
Para el cliente 1 el sum del precio debería ser =50 y el del abono=10.

Espero me ayuden. Saludos.
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 Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Resta de SUM de tablas tablas diferentes

Publicado por Isaias (1921 intervenciones) el 11/03/2019 18:05:06
¿En que motor de base de datos?

Según veo el código, no esta mal, si acaso, hacer JOIN en lugar de juntar las tablas con un alias en el WHERE.

No haga la resta,solo obtenga las sumas y muestrelas
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

Resta de SUM de tablas tablas diferentes

Publicado por José (7 intervenciones) el 11/03/2019 20:38:25
Estoy utilizando mysql.

Intenté utilizando join, sólo obteniendo las sumas, y me sigue dando el mismo resultado erróneo.
1
2
SELECT productos.Id_cliente,SUM(productos.precio),SUM(abono.Abono) FROM productos
INNER JOIN abono ON productos.Id_cliente=abono.Id_cliente GROUP BY productos.Id_cliente;

Resultados:
Id_cliente-- sum(p.precio)-- sum(a.Abono)
----2 ----156 ---- 20
----1 ----50 ---- 20

Al hacer la suma por separado de esta manera me da el resultado correcto.
1
SELECT SUM(precio) as total FROM productos WHERE Id_cliente=2;
Resultado para el cliente 2:
total
52

Pero al tratar de obtenerlo como yo quiero ya me arroja otros resultados.
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