[firebase-br] SQL LEFT JOIN

Renan Rogowski Pozzo renanrpozzo em gmail.com
Ter Jun 5 22:19:55 -03 2018


O SUM vai somar todos os registros que retonarem na consulta. Se algum dos
joins a relação retornar mais de um registro vai somar duas, ou mais, vezes.

Tente fazer o select retornando todos os registros para ver se esse é o
problema.

Em ter, 5 de jun de 2018 às 21:18, Paulo Geloramo <
assisinformatica em gmail.com> escreveu:

> SELECT
> COALESCE(SUM(I.QUANTIDADE), 0) AS REMESSA,
> COALESCE(SUM(C.VENDA), 0) AS VENDA,
> COALESCE(SUM(Q.QUANTIDADE), 0) AS ESTOQUE
> FROM NOTA_PONTO_ITEM I
> JOIN PONTO T ON T.ID_PONTO = I.ID_PONTO
> JOIN EDICAO E ON E.ID_EDICAO = I.ID_EDICAO
> JOIN PRODUTO P ON P.ID_PRODUTO = E.ID_PRODUTO
> JOIN ASSUNTO A ON A.ID_ASSUNTO = P.ID_ASSUNTO
> LEFT JOIN CE_PONTO_ITEM C ON (C.ID_PONTO = T.ID_PONTO AND C.ID_EDICAO =
> E.ID_EDICAO)
> LEFT JOIN ESTOQUE Q ON (Q.ID_PONTO = T.ID_PONTO AND Q.ID_EDICAO =
> E.ID_EDICAO)
> WHERE T.CODIGO_PONTO = 1000
> AND A.CODIGO_ASSUNTO = 10
>
> Firebird 2.5.8
> Quando faço três consultas separadas
> retorna o total correto.
>
> Com dois LEFT JOIN retorna
> o total da REMESSA errado.
>
> Alguma sugestão para retornar
> REMESSA, VENDA e ESTOQUE na mesma
> consulta?
>
> --
> Paulo Esteves
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas:
> http://www.firebase.com.br/pesquisa_lista.html
>
-- 
Abraço,
Renan Rogowski Pozzo

*"E a paz de Deus, que excede todo o entendimento, guardará os vossos
corações e os vossos pensamentos em Cristo Jesus." Filipenses 4.7*



Mais detalhes sobre a lista de discussão lista