Fórum Iner join em 2 tabelas #134300

06/04/2010

0

Preciso selecionar os produtos somados que tiveram entradas e vendas em uma só coluna. estou usando Firebird 1.5   ex: produto            entradas  vendas Produto teste   10               5 bom as entradas eu consegui atraves deste comando   SELECT
P.CODIGO_BARRAS,
P.PRODUTO,
SUM(E.QUANTIDADE) AS QTENTRADA
FROM PRODUTOS P
INNER JOIN NF_ENTRADA_ITENS E ON(P.CODIGO = E.CODIGO)
GROUP BY CODIGO_BARRAS,PRODUTO ORDER BY 3 DESC. tentei colocar + um inner join + os valores retornam valores absurdos     SELECT
P.CODIGO_BARRAS,
P.PRODUTO,
SUM(E.QUANTIDADE ) AS QTENTRADA,
SUM(V.QUANTIDADE ) AS QTSAIDAS
FROM PRODUTOS P
INNER JOIN NF_ENTRADA_ITENS E ON(P.CODIGO = E.CODIGO)
INNER JOIN VENDAS V           ON(P.CODIGO = V.CODIGO) GROUP BY P.CODIGO_BARRAS,P.PRODUTO ORDER BY 3 DESC  
Emerson Charles

Emerson Charles

Responder

Posts

06/04/2010

Emerson Charles

Preciso selecionar os produtos somados que tiveram entradas e vendas em uma só coluna. estou usando Firebird 1.5   ex: produto            entradas  vendas Produto teste   10               5 bom as entradas eu consegui atraves deste comando   SELECT
P.CODIGO_BARRAS,
P.PRODUTO,
SUM(E.QUANTIDADE) AS QTENTRADA
FROM PRODUTOS P
INNER JOIN NF_ENTRADA_ITENS E ON(P.CODIGO = E.CODIGO)
GROUP BY CODIGO_BARRAS,PRODUTO ORDER BY 3 DESC. tentei colocar + um inner join + os valores retornam valores absurdos     SELECT
P.CODIGO_BARRAS,
P.PRODUTO,
SUM(E.QUANTIDADE ) AS QTENTRADA,
SUM(V.QUANTIDADE ) AS QTSAIDAS
FROM PRODUTOS P
INNER JOIN NF_ENTRADA_ITENS E ON(P.CODIGO = E.CODIGO)
INNER JOIN VENDAS V           ON(P.CODIGO = V.CODIGO) GROUP BY P.CODIGO_BARRAS,P.PRODUTO ORDER BY 3 DESC  
Desje já Obrigado a tds
Responder

Gostei + 0

06/04/2010

Emerson Nascimento

SELECT
  P.CODIGO_BARRAS,
  P.PRODUTO,
  (SELECT COALESCE(SUM(E.QUANTIDADE),0)
   FROM NF_ENTRADA_ITENS E
   WHERE E.CODIGO = P.CODIGO) AS QTENTRADA,
  (SELECT COALESCE(SUM(V.QUANTIDADE),0)
   FROM VENDAS V
   WHERE V.CODIGO = P.CODIGO) AS QTSAIDAS
FROM PRODUTOS P

se você preferir, pode fazer com stored procedure.
Responder

Gostei + 0

07/04/2010

Emerson Charles

quase deu certo, o exemplo seria isso mesmo amigo
só precisa agora agrupar os produtos iguais
ele esta mostrando um a um
SELECT
  P.CODIGO_BARRAS,
  P.PRODUTO,
  (SELECT COALESCE(SUM(E.QUANTIDADE),0)
   FROM NF_ENTRADA_ITENS E
   WHERE E.CODIGO = P.CODIGO) AS QTENTRADA,
  (SELECT COALESCE(SUM(V.QUANTIDADE),0)
   FROM VENDAS V
   WHERE V.CODIGO = P.CODIGO) AS QTSAIDAS
FROM PRODUTOS P
Responder

Gostei + 0

07/04/2010

Emerson Nascimento

na sua tabela produtos há produtos repetidos????
Responder

Gostei + 0

07/04/2010

Emerson Charles

A descricao pode conter intens reptidos
por questao de trabalhar com medicamentos.
uma amigo me disse que eu poderia usar views até me passou um exemplo.
o duro é que eu gostaria dessa solução que o cliente pudesse selecionar por periodo.
por enquanto Obrigado..


/* View: VSAIDAS, Owner: SYSDBA */

CREATE VIEW "VSAIDAS" (
  "CODIGO",
  "CODIGO_BARRAS",
  "PRODUTO",
  "QTSAIDAS"
) AS

SELECT
P.CODIGO,
P.CODIGO_BARRAS,
P.PRODUTO,
SUM(V.QUANTIDADE) as QTSAIDAS
FROM PRODUTOS P INNER JOIN VENDAS V
ON V.CODIGO = P.CODIGO
GROUP BY P.CODIGO, P.CODIGO_BARRAS, P.PRODUTO
;

CREATE VIEW "VENTRADAS" (
  "CODIGO",
  "CODIGO_BARRAS",
  "PRODUTO",
  "QTENTRADAS"
) AS

SELECT
P.CODIGO,
P.CODIGO_BARRAS,
P.PRODUTO,
SUM(E.QUANTIDADE) as QtdeEntradas,
FROM PRODUTOS P INNER JOIN NF_Entrada_ITENS E
ON E.CODIGO = P.CODIGO
GROUP BY P.CODIGO, P.CODIGO_BARRAS, P.PRODUTO
;

estou usando assim

SELECT
A.*,
B.QTSAIDAS FROM VENTRADAS A
LEFT OUTER JOIN VSAIDAS B ON A.CODIGO = B.CODIGO.



Responder

Gostei + 0

07/04/2010

Emerson Nascimento

então basta agrupar, como você havia feito nos primeiros exemplos:

SELECT
  P.CODIGO_BARRAS,
  P.PRODUTO,
  MAX(P.DESCRICAO) DESCRICAO,
  (SELECT COALESCE(SUM(E.QUANTIDADE),0)
   FROM NF_ENTRADA_ITENS E
   WHERE E.CODIGO = P.CODIGO) AS QTENTRADA,
  (SELECT COALESCE(SUM(V.QUANTIDADE),0)
   FROM VENDAS V
   WHERE V.CODIGO = P.CODIGO) AS QTSAIDAS
FROM
  PRODUTOS PGROUP BY
  P.CODIGO_BARRAS,
  P.PRODUTO

Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar