Iner join em 2 tabelas
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
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
Curtidas 0
Respostas
Emerson Charles
06/04/2010
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
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
GOSTEI 0
Emerson Nascimento
06/04/2010
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.
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.
GOSTEI 0
Emerson Charles
06/04/2010
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
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
GOSTEI 0
Emerson Nascimento
06/04/2010
na sua tabela produtos há produtos repetidos????
GOSTEI 0
Emerson Charles
06/04/2010
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.
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.
GOSTEI 0
Emerson Nascimento
06/04/2010
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
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
GOSTEI 0