Página 1 de 1

Select retornando NULL se uma das tabelas, não conter valor

Enviado: 20 Mai 2022 09:20
por porter
Olá pessoal, essa instrução SQL, soma dois campos em duas tabelas, se as duas tabelas contem valores, está somando corretamente, mas se uma das tabelas, não conter valor, ela retorna NULL como resultado, como faço para retornar um valor, se uma das tabelas não conter nenhum valor ?

SELECT

SUM(R.PAGO+M.VALOR) SOMATORIA

FROM tabela1 R, tabela2 M

WHERE R.RBCODCLI = 1 AND M.CCLIENTE = 1;

MySql

Select retornando NULL se uma das tabelas, não conter valor

Enviado: 20 Mai 2022 14:55
por JoséQuintas
COALESCE() pega o primeiro valor que não seja NULL.

Exemplos:

Código: Selecionar todos

COALESCE( NULL, NULL, 0 )
COALESCE( A.valor, B.Valor, 0 )
COALESCE( A.valor , 0 ) + COALESCE( B.valor, 0 )
COALESCE( A.nome, '' )

Select retornando NULL se uma das tabelas, não conter valor

Enviado: 20 Mai 2022 15:07
por Itamar M. Lins Jr.
Olá!
Não entendi a pergunta, nem a resposta.

Saudações,
Itamar M. Lins Jr.

Select retornando NULL se uma das tabelas, não conter valor

Enviado: 20 Mai 2022 15:10
por Itamar M. Lins Jr.
Olá!
Mudando na estrutura das tabelas para ser NOT NULL ?
Null + 10 = Null é isso ?

Saudações,
Itamar M. Lins Jr.

Select retornando NULL se uma das tabelas, não conter valor

Enviado: 20 Mai 2022 16:48
por JoséQuintas
Não.
Mesmo que mude estrutura, um SELECT pode retornar NULL se for relacionado.

Select retornando NULL se uma das tabelas, não conter valor

Enviado: 20 Mai 2022 16:52
por porter
Olá Itamar, obrigado por sua atenção
Nessa instrução, tenho duas tabelas, serão somados o campo PAGO da tabela1 e o campo VALOR da tabela 2, se as duas tabelas satisfazer a condição, ele soma corretamente, mas se uma das tabelas não satisfizer a condição, ele está retornando NULL, mas deveria retornar um valor, se pelo uma das tabelas satisfizer a condição, entendeu.

SELECT
SUM(R.PAGO+M.VALOR) SOMATORIA
FROM tabela1 R, tabela2 M
WHERE R.RBCODCLI = 1 AND M.CCLIENTE = 1;

Select retornando NULL se uma das tabelas, não conter valor

Enviado: 20 Mai 2022 17:34
por Itamar M. Lins Jr.
Olá!

Código: Selecionar todos

SELECT (R.PAGO + M.VALOR) as SOMATORIA FROM...
Saudações,
Itamar M. Lins Jr.

Select retornando NULL se uma das tabelas, não conter valor

Enviado: 20 Mai 2022 18:05
por alxsts
Olá!
porter escreveu:...essa instrução SQL, soma dois campos em duas tabelas, se as duas tabelas...
Não... você está confundindo as coisas. SUM opera apenas em uma tabela. Você pode somar uma coluna (ex: SUM( qtde ) ) ou somar o resultado de uma expressão (ex: SUM( qtde * valor ) ), na mesma tabela.

Para fazer o que você precisa, precisa fazer o SUM em cada tabela e depois somar os dois...

Código: Selecionar todos

SELECT SUM( t.n ) Somatorio
  FROM ( SELECT SUM( PAGO ) n
           FROM tabela1
          WHERE RBCODCLI = 1
UNION ALL
        SELECT SUM( valor ) n 
          FROM tabela2 
         WHERE CCLIENTE = 1 ) AS t
Outra coisa: SUM ignora valores NULL na expressão. Portanto, não precisa usar Coalesce().

Veja: MySQL SUM

Select retornando NULL se uma das tabelas, não conter valor

Enviado: 20 Mai 2022 18:13
por Itamar M. Lins Jr.
Olá!
Tava lendo na internet... Mas lá é mais difícil de aprender por conta das perguntas...
Vi assim entre aspas () sem o SUM(). E vi com UNION ALL
Agora esse COALESCE() neste caso não vi com ele se encaixa.

Saudações,
Itamar M. Lins Jr.