Clipper On Line • Ver Tópico - Select retornando NULL se uma das tabelas, não conter valor

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

Discussão sobre SQL

Moderador: Moderadores

 

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

Mensagempor porter » 20 Mai 2022 09:20

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
porter
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 990
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 18 vezes

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

Mensagempor JoséQuintas » 20 Mai 2022 14:55

COALESCE() pega o primeiro valor que não seja NULL.

Exemplos:

COALESCE( NULL, NULL, 0 )
COALESCE( A.valor, B.Valor, 0 )
COALESCE( A.valor , 0 ) + COALESCE( B.valor, 0 )
COALESCE( A.nome, '' )
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 18906
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 14 vezes
Mens.Curtidas: 1013 vezes

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

Mensagempor Itamar M. Lins Jr. » 20 Mai 2022 15:07

Olá!
Não entendi a pergunta, nem a resposta.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6006
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 241 vezes
Mens.Curtidas: 356 vezes

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

Mensagempor Itamar M. Lins Jr. » 20 Mai 2022 15:10

Olá!
Mudando na estrutura das tabelas para ser NOT NULL ?
Null + 10 = Null é isso ?

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6006
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 241 vezes
Mens.Curtidas: 356 vezes

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

Mensagempor JoséQuintas » 20 Mai 2022 16:48

Não.
Mesmo que mude estrutura, um SELECT pode retornar NULL se for relacionado.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 18906
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 14 vezes
Mens.Curtidas: 1013 vezes

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

Mensagempor porter » 20 Mai 2022 16:52

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;
porter
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 990
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 18 vezes

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

Mensagempor Itamar M. Lins Jr. » 20 Mai 2022 17:34

Olá!
SELECT (R.PAGO + M.VALOR) as SOMATORIA FROM...


Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6006
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 241 vezes
Mens.Curtidas: 356 vezes

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

Mensagempor alxsts » 20 Mai 2022 18:05

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...
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
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2754
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 16 vezes
Mens.Curtidas: 209 vezes

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

Mensagempor Itamar M. Lins Jr. » 20 Mai 2022 18:13

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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6006
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 241 vezes
Mens.Curtidas: 356 vezes




Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro