Doubt with this query [closed]

0

My teacher did the following query to show the total quantity of stock of each product, however I did not quite understand how it does to generate the total inventory 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
    
asked by anonymous 02.12.2016 / 16:32

1 answer

1

Well come on. the select is divided into 3 parts, we go through the two internal selects.

  • BLUE - Searches for the quantity (SUM) of all input registers;
  • ORANGE - Union with select that returns the quandality of all output registers (negative value).
  • YELLOW - A select on the outside that sums the amount of input + the amount of output (negative);
  •     
    02.12.2016 / 18:41