A single SQL query for a user's products!

2

I have the following query:

SELECT id_produto, produto, (SUM(credito) - SUM(debito)) as producao_total 
FROM produtos_farm PF 
INNER JOIN produtos P ON P.id = PF.id_produto 
WHERE PF.id_usuario = 20 AND PF.id_produto = 1

This returns me to the sum, product name, and product id.

One user can have up to 10 products.

How would I do to not have to make 10 queries (one for each product)?

Tabela PRODUTOS:
id,
nome,
producao,
preco_padrao

Tabela PRODUTOS_FARM:
id,
id_produto,
id_usuario,
credito,
debito
    
asked by anonymous 12.01.2018 / 18:43

2 answers

6

Assuming that id_produto identifies each product just try the following:

SELECT id_produto, produto, (SUM(credito) - SUM(debito)) as producao_total 
FROM produtos_farm PF 
INNER JOIN produtos P ON P.id = PF.id_produto 
WHERE PF.id_usuario = 20 AND id_produto BETWEEN 1 AND 10
GROUP BY id_produto

In this case the total production of user 20 will be broken down by product. If there are only 10 products in database and you want to return all of them the AND id_produto BETWEEN 1 AND 10 clause is not required (as the answer of @rLines ).

    
12.01.2018 / 19:00
3

Just remove id_produto from where , so you'll get all products of the queried user:

SELECT id_produto, produto, (SUM(credito) - SUM(debito)) as producao_total 
FROM produtos_farm PF 
INNER JOIN produtos P ON P.id = PF.id_produto 
WHERE PF.id_usuario = 20
GROUP BY id_produto
    
12.01.2018 / 18:48