Estou enfrentando um problema e por mais que tenho pesquisado, não encontro solução. Tenho duas tabelas:
DOADORES - tabela de pessoas jurídicas que efetuaram doações, campos:
CNPJ
NOME
ENDERECO
DOACOES - tabela que possui as doações efetuadas pelos doadores, campos
CNPJ2
VALOR
Nem todos os DOADORES efetuaram DOAÇÕES. Preciso identificar o valor total das doações. Para isso, tentei com o INNER JOIN:
SELECT cnpj2, SUM(valor) FROM doacoes
INNER JOIN doadores ON doacoes.cnpj2 = doadores.cnpj
GROUP BY doacoes.cnpj2
O resultado é:
doador--------------------sum(valor)
61522512000115------404995000.00
61564639000118------1200000.00
Ocorre que quando pego os dois CNPJs acima e faço um SELECT SUM direto na Tabela DOACOES (sem o inner join), a soma é completamente diferente, vejam:
SELECT SUM(VALOR) FROM DOACOES
WHERE cnpj2 = '61522512000115' or cnpj2 = '61564639000118'
Resultado:
sum(valor)
38850000.00
Em resumo, o resultado do campo VALOR com Inner Join é R$ 406.195.000,00, enquanto que a soma pelo SELECT SUM é R$ 3.885.000,00, sendo que o valor correto é o apresentado pelo SELECT SUM.
O que pode estar acontecendo? A impressão que tenho é que o INNER JOIN está multiplicando o campo valor, mas não consigo estabelecer a relação. Tenho lido bastante a respeito de Inner, Left e Right Join, mas não consigo resolver essa questão.
A quem puder ajudar, antecipadamente manifesto meus agradecimentos.
Pergunta
Eron Pessoa
Prezados,
Estou enfrentando um problema e por mais que tenho pesquisado, não encontro solução. Tenho duas tabelas:
DOADORES - tabela de pessoas jurídicas que efetuaram doações, campos:
CNPJ
NOME
ENDERECO
DOACOES - tabela que possui as doações efetuadas pelos doadores, campos
CNPJ2
VALOR
Nem todos os DOADORES efetuaram DOAÇÕES. Preciso identificar o valor total das doações. Para isso, tentei com o INNER JOIN:
SELECT cnpj2, SUM(valor) FROM doacoes
INNER JOIN doadores ON doacoes.cnpj2 = doadores.cnpj
GROUP BY doacoes.cnpj2
O resultado é:
doador--------------------sum(valor)
61522512000115------404995000.00
61564639000118------1200000.00
Ocorre que quando pego os dois CNPJs acima e faço um SELECT SUM direto na Tabela DOACOES (sem o inner join), a soma é completamente diferente, vejam:
SELECT SUM(VALOR) FROM DOACOES
WHERE cnpj2 = '61522512000115' or cnpj2 = '61564639000118'
Resultado:
sum(valor)
38850000.00
Em resumo, o resultado do campo VALOR com Inner Join é R$ 406.195.000,00, enquanto que a soma pelo SELECT SUM é R$ 3.885.000,00, sendo que o valor correto é o apresentado pelo SELECT SUM.
O que pode estar acontecendo? A impressão que tenho é que o INNER JOIN está multiplicando o campo valor, mas não consigo estabelecer a relação. Tenho lido bastante a respeito de Inner, Left e Right Join, mas não consigo resolver essa questão.
A quem puder ajudar, antecipadamente manifesto meus agradecimentos.
Obrigado pela atenção.
Eron
Editado por Denis CourcyLink para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados