Doubt with this query

Asked

Viewed 28 times

0

My teacher made the following query, to show the total amount of stock of each product, however I do not understand very well how it does to generate the total stock quantity of each product, follows the query:

SELECT SUM
  (ret.quantidade) AS quantidade,
  ret.nome_produto,
  ret.id_produto,
  ret.preco
FROM
  (
  SELECT SUM
    (p.quantidade) AS QUANTIDADE,
    p.tipo_registro,
    p.id_produto,
    c.nome AS nome_produto,
    c.preco
  FROM
    estoque p
  JOIN
    administrador u ON u.id_admin = p.id_admin
  JOIN
    cadastro_produtos c ON c.id_produto = p.id_produto
  WHERE
    p.tipo_registro = 'entrada'
  GROUP BY
    p.tipo_registro,
    p.id_produto,
    c.nome,
    c.preco
  UNION
SELECT
  - SUM(p.quantidade) AS QUANTIDADE,
  p.tipo_registro,
  p.id_produto,
  c.nome AS nome_produto,
  c.preco
FROM
  estoque p
JOIN
  administrador u ON u.id_admin = p.id_admin
JOIN
  cadastro_produtos c ON c.id_produto = p.id_produto
WHERE
  p.tipo_registro = 'saida'
GROUP BY
  p.tipo_registro,
  p.id_produto,
  c.nome,
  c.preco
) ret
GROUP BY
  ret.nome_produto,
  ret.id_produto,
  ret.preco
ORDER BY
  ret.id_produto

1 answer

1


All right, let’s go. select is divided into 3 parts, let’s go through the two internal selects.

  1. BLUE - Search quantity (SUM) of all input records;
  2. ORANGE - Union with select that returns the quandity of all output records (negative value).
  3. AMARARELO - A select on the outside that sums the input amount + the output amount (negative);

inserir a descrição da imagem aqui

  • 1

    Thank you friend, for answering my question.

Browser other questions tagged

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