Question:
I am doing a query where I get the balance of the total of the VentaComision
table and the total ComisionCobrada
:
SELECT * FROM VentaComision;
Id | Total |
---|---|
284 | 104.55 |
285 | 104.55 |
SELECT * FROM ComisionCobrada;
id | IDSaleCommission | Total |
---|---|---|
72 | 284 | 50.00 |
73 | 284 | 54.55 |
74 | 285 | 4.47 |
When taking out the difference, the SUM(vc.Total)
is adding 2 times the total of Id 284. The Total
would have to be added only once.
SELECT (SUM(vc.Total) - SUM(cc.Total)) as saldo FROM VentaComision vc
LEFT JOIN ComisionCobrada cc ON cc.IdVentaComision = vc.Id
balance |
---|
204.63 |
Answer:
If you need to subtract the sum of the elements of one table from the sum of the elements of the other table, then this is the query you need:
SELECT
SUM(Total) - (
SELECT SUM(Total) FROM ComisionCobrada
) as saldo
FROM VentaComision
The operation is simple: the sum of the totals of the VentaComision
table is subtracted by the result of the subquery, which is the sum of the totals of the ComisionCobrada
table.
You can see how it works at the following link:
If what you need is a list of each of the transactions, then it is the following:
SELECT
Id,
Total,
Total - (
SELECT SUM(Total) FROM ComisionCobrada cc
WHERE vc.Id = cc.IdVentaComision
) as saldo
FROM VentaComision vc;
You can see the latter in the following link: