relationship between SQL tables

Asked

Viewed 224 times

0

I have the following problem, I have two stocks in my company, so I have two values for the stock, and the stock record looks something like this:

inserir a descrição da imagem aqui

as the picture shows, each product has two records, each one stating the quantity of each stock. I cannot change the way the record is made in the database, and I need an instruction that add the two, until then is not so difficult, what is making my hair fall is that I need this value to be informed in the same table of the code below

SELECT nome_produto AS Nome, Descricao_produto AS 'Marca/Laboratório', principio_ativo AS 'Principio ativo', produtos_precos.Custo_produto AS Custo, produtos_precos.Precovenda_produto AS 'Preço a vista', produtos_precos.precoprazo_produto AS 'Preço a prazo', SUM(produtos_estoque.Estoque_produto) AS Estoque
FROM genius.produtos
LEFT JOIN genius.produtos_precos ON produtos_precos.id_produto = produtos.id
LEFT JOIN genius.produtos_estoque ON produtos_estoque.id_produto = produtos.id
WHERE `nome_produto` LIKE '%ana%' AND genius.produtos_precos.id_empresa = 3;

without the part "SUM(products_stock.Stock_product) AS Stock" it returns to the following table:

inserir a descrição da imagem aqui

but when I add the part of the sum it returns it to me:

inserir a descrição da imagem aqui

that is, it sums up the stock of all products that match the survey, and does not give me the sum of each product

well, in short, I need a table exactly like the first picture, but with a column more "stock" that adds up the two stocks of each product

  • I already had this problem to put together price tables, where for each product there were 5 different prices and all were in the same table. What I did was put a LEFT JOIN PRODUCTS P2 ON P1.PROD_ID = P2.PROD_ID. In select pulled the price column for each PRODUCT TABLE referenced: SELECT P1.PRECO, P2.PRECO, ... In your case it would be the balance of each stock, a third column could be the sum of the stock balance 1 with the stock2. I think this can help you.

  • @Rebertojunior, your question is not very expensive, I did not understand where you want to get it is to add all the calories or create a stock column (but with a column more "stock")

1 answer

1

Roberto, in the current context your question I believe you have two lines with the same product and I would like to add the stock contained in both, presenting the value in only one line by product.

So you can do the following:

SELECT /* Demais valores da sua consulta, onde todos que não serão agrupados (somados ou contados, por exemplo) 
           deverão aparecer na cláusula GROUP BY ao final da consulta*/ 
    nome_produto AS Nome, Descricao_produto AS 'Marca/Laboratório', 
    principio_ativo AS 'Principio ativo', 
    produtos_precos.Custo_produto AS Custo, 
    produtos_precos.Precovenda_produto AS 'Preço a vista', 
    produtos_precos.precoprazo_produto AS 'Preço a prazo',
    SUM(produtos_estoque.Estoque_produto) AS Estoque
FROM genius.produtos
LEFT JOIN genius.produtos_precos ON produtos_precos.id_produto = produtos.id
LEFT JOIN genius.produtos_estoque ON produtos_estoque.id_produto = produtos.id
WHERE `nome_produto` LIKE '%ana%' 
AND genius.produtos_precos.id_empresa = 3;
--Cláusula agrupadora somará o estoque dos produtos dentro do contexto de agrupamento (campos indicados abaixo).
GROUP BY nome_produto, Descricao_produto, principio_ativo, 
         produtos_precos.Custo_produto, produtos_precos.precoprazo_produto;

I hope I could help you.

  • I managed using the product GROUP BY, but what happens is that it only hides one of the values, without adding up the stock

  • GROUP BY basically joins similar lines through the indicated fields. If you are "hiding" lines it is because they have identical values between the fields used in the GROUP BY clause. This way the value would be added between the lines that were "joined".

  • I don’t know how to explain exactly what happens, but using GROUP BY a product that has in one of the stocks 5 and in the other 2 appears only the value of one of them, even if when I take GROUP BY out of the formula the same product appears twice and each with the corresponding value of each stock

Browser other questions tagged

You are not signed in. Login or sign up in order to post.