I'm having trouble building an sql that returns the sum of the entries and the sum of the outputs correctly. I have tables tbl_produtos(id_produto,NomeProduto)
, tbl_entradas_produtos(Id_produto,QuantProdutos,Estoque,ExcluirProdutoEnt)
, tbl_saidas_produtos(Id_produto,QuantProdutos,Estoque,ExcluirProdutoSaida)
This is the sql I'm using:
$sql = "SELECT p.NomeProduto, \n"
. "IFNULL(SUM(ep.QuantProdutos),0) as Entrada, \n"
. "IFNULL(SUM(sp.QuantProdutos),0) as Saida,\n"
. "(IFNULL(SUM(ep.QuantProdutos),0) - IFNULL(SUM(sp.QuantProdutos),0)) as Total\n"
. "FROM tbl_entradas_produtos ep \n"
. "inner join tbl_produtos p \n"
. "on (p.idProduto=ep.IdProduto and ep.ExcluirProdutoEnt=0 and ep.Estoque=$IdEstoque) \n"
. "left join tbl_saidas_produtos as sp \n"
. "on (sp.IdProduto = p.idProduto and sp.Estoque = $IdEstoque and sp.ExcluirProdutoSaida = 0)\n"
. "Group by p.NomeProduto";
The purpose of this sql is to return:
- The 1st column with the product names;
- The 2nd column with the sum of the "Product Quantity" of all entries of each product;
- The 3rd column with the sum of the "Product Quantity" of all outputs of each product;
- The 4th column with the Total (sum of the number of entries - sum of the number of outputs)
But it returns me some duplicate records, like the example I simulated in my database, it should return this:
NOME DO PRODUTO | ENTRADA | SAIDA | EM ESTOQUE
ALFACE | 105 | 40 | 65
BANANA | 50 | 0 | 50
CENOURA | 80 | 15 | 65
But it returns me this:
NOME DO PRODUTO | ENTRADA | SAIDA | EM ESTOQUE
ALFACE | 105 | 80 | 25
BANANA | 50 | 0 | 50
CENOURA | 160 | 30 | 130
Yes, I simulated this query and I did not get any alternatives to reach the correct values, this is beyond my knowledge ... In the bank I have the following lines that result in the scenario example I mentioned above ...
tbl_entradas_produtos:
id | IdProduto | QuantProdutos | Estoque | ExcluirProdutoEnt
1 | 1 | 75 | 2 | 0
2 | 2 | 75 | 2 | 0
3 | 2 | 30 | 2 | 0
4 | 1 | 5 | 2 | 0
5 | 3 | 50 | 2 | 0
tbl_produtos:
idProduto | NomeProduto
1 | CENOURA
2 | ALFACE
3 | BANANA
tbl_saidas_produtos
id | IdProduto | QuantProdutos | Estoque | ExcluirProdutoSaida
1 | 1 | 10 | 2 | 0
2 | 2 | 40 | 2 | 0
3 | 1 | 5 | 2 | 0