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

(Resolvido) Consulta SQL credito e debito


Bosco

Pergunta

Olá amigo Denis Courcy

Algum dias atras estava com problema em uma consulta sql e tu me ajudou com o codigo abaixo.

mas me deparei com um erro. Quando a tabela de debito esta vazia ele não me traz o valor do saldo e nem a soma de credito.

SELECT cli.Chave, cred.total_credito, debt.total_debito, (cred.total_credito - debt.total_debito) AS saldo
FROM cli
INNER JOIN (SELECT id_remetente, sum(Credito) AS total_credito
FROM clicredito
GROUP BY id_remetente) cred ON cred.id_remetente = cli.Chave
INNER JOIN(SELECT id_remetente, sum(Debito) AS total_debito
FROM clidebito
GROUP BY id_remetente) debt ON debt.id_remetente = cli.Chave WHERE cli.Chave = 37813
pode me ajudar novamente com um luz.
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>

Olá amigo Denis Courcy

Algum dias atras estava com problema em uma consulta sql e tu me ajudou com o codigo abaixo.

mas me deparei com um erro. Quando a tabela de debito esta vazia ele não me traz o valor do saldo e nem a soma de credito.

SELECT cli.Chave, cred.total_credito, debt.total_debito, (cred.total_credito - debt.total_debito) AS saldo
FROM cli
INNER JOIN (SELECT id_remetente, sum(Credito) AS total_credito
FROM clicredito
GROUP BY id_remetente) cred ON cred.id_remetente = cli.Chave
INNER JOIN(SELECT id_remetente, sum(Debito) AS total_debito
FROM clidebito
GROUP BY id_remetente) debt ON debt.id_remetente = cli.Chave WHERE cli.Chave = 37813
pode me ajudar novamente com um luz.

Isto acontece porque a intercessão dos conjuntos cred.id_remetente = cli.Chave retorna um conjunto vazio.

A solução é substituir o INNER JOIN pelo LEFT JOIN e colocar um IF onde aparecerem os valores, para testar se nulos sustituir por zero.

Corrigindo o código, fica assim:

SELECT cli.Chave, IF(cred.total_credito IS NULL, 0, cred.total_credito) AS total_credito, IF(debt.total_debito IS NULL, 0, debt.total_debito) AS total_debito,
(IF(cred.total_credito IS NULL, 0, cred.total_credito) - IF(debt.total_debito IS NULL, 0, debt.total_debito)) AS saldo
FROM cli
LEFT JOIN (SELECT id_remetente, sum(Credito) AS total_credito
   FROM clicredito
   GROUP BY id_remetente) cred ON cred.id_remetente = cli.Chave
LEFT JOIN(SELECT id_remetente, sum(Debito)  AS total_debito
FROM clidebito
GROUP BY  id_remetente) debt ON debt.id_remetente = cli.Chave WHERE cli.Chave = 37813
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,1k
×
×
  • Criar Novo...