Ir para conteúdo
Fórum Script Brasil
  • 0

JOIN em 3 tabelas retornando valor errado


poce1don

Pergunta

Acabo de chegar ao fórum, e peço sua ajuda. :)
Tenho 3 tabelas: tblVenda, tblVendido, tblPagamento
tblVenda: codCadastro, codCliente
tblVendido: codCadastro, codVenda, codProduto, Quantidade, Valor
tblPagamento: codCadastro, codVenda, Valor
basicamente seria assim:
tblVenda:
codCadastro | codCliente
1 4
2 4
3 1
4 7
5 2
tblVendido:
codCadastro | codVenda | codProduto | Quantidade | Valor
1 1 8 2 5,00
2 1 5 7 14,00
3 1 2 1 3,00
4 2 8 3 9,00
5 2 3 1 3,00
tblPagamento:
codCadastro | codVenda | Valor
1 2 12,00
2 1 22,00
O que faço para minha query consulte as 3 tabelas para retornar o
valor total que o cliente comprou e o valor total de pagamentos
que ele fez com base apenas no código de codCadastro do cliente?
Já tentei com diversos left join ou inner join mas nada funcionou
o valor total vendido eu consigo, mas o valor total do pagamento
referente à venda, está sendo multiplicado conforme a quantidade de
produtos vendidos.
Com essa query:
select sum(vi.valor * quantidade), sum(pg.valor)
from ((tblvendas as ve
left join tblvendidos as vi on vi.codVenda = ve.codCadastro)
left join tblpagamento as pg on pg.codVenda = ve.codCadastro)
where ve.codCliente = 4, conexao, lock
o resultado será:
valor vendido: 34,00 (correto)
valor pagamento: 90,00 = (12,00 x 2) + (22,00 x 3)
o valor de pagamento ao invés de vir os mesmos 34,00 de vendido, aparece 90,00.
Sabe me explicar o que está acontecendo? :o
Obrigado! :D
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
Você está usando a seguinte ligação:
left join tblvendidos as vi on vi.codVenda = ve.codCadastro
left join tblpagamento as pg on pg.codVenda = ve.codCadastro
Porém, acredito que deveria ser assim:
left join tblvendidos as vi on vi.codCadastro = ve.codCadastro
left join tblpagamento as pg on pg.codCadastro = ve.codCadastro
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...