problema com union all

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
pyro
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 323
Registrado em: Qui, 21 Set 2006 10:21 am
Localização: Barala - TT

Estou com um problema meio estranho em uma select com union all. A select é como esta abaixo:

Selecionar tudo

select campo1 
         campo2 
         campo3 
from( 
 select 0 campo1 
          campo2 
          0 campo3 
 from tabela2 
union all 
 select campo1 
          0  campo2 
          0 campo3 
 from tabela1 
union all 
 elect 0  campo1 
         0  campo2 
         campo3 
 from tabela3 
) 

O fato é que os campos campo1 e campo3 retornam os dados normalmente e o campo2 sempre retorna zero, sendo que se eu executar a select separadamente ela retorna valor. Será que estou fazendo alguma coisa errada no union all?
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5018
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Você deve estar fazendo algum erro ou alguma coisa diferente que não está citado nesse sql acima...
bertosro
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 88
Registrado em: Sex, 18 Ago 2006 11:13 am
Localização: São Paulo - SP
Bertosro
MSN / TALK - roberto.fernandes@gmail.com

os campos são numericos?
tente assim

Selecionar tudo

select campo1 
         campo2 
         campo3 
from( 
 select '0' campo1 
          campo2 
          '0' campo3 
 from tabela2 
union all 
 select campo1 
          '0'  campo2 
          '0' campo3 
 from tabela1 
union all 
 elect '0'  campo1 
         '0'  campo2 
         campo3 
 from tabela3 
) 
rcoelho_6
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 18
Registrado em: Ter, 04 Nov 2008 1:56 pm
Localização: SP - são Paulo

O erro esta que você colocou um alias para um campo que não tem nem um tipo de valor, isso da erro no oracle.

caso você queria que o select não torne nada ou null
coloque '' ou null.

Selecionar tudo

select campo1 
         campo2 
         campo3 
from( 
 select '0' campo1 
          '' campo2  -- DEVE conter qualquer tivo de valor como '' ou null
          '0' campo3 
 from tabela2 
union all 
 select ''campo1 
          '0'  campo2 
          '0' campo3 
 from tabela1 
union all 
 elect '0'  campo1 
         '0'  campo2 
         ''campo3 
 from tabela3 
) 
pyro
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 323
Registrado em: Qui, 21 Set 2006 10:21 am
Localização: Barala - TT

Na verdade esse campo que você citou não é que ele não tenha valor, na verdade ele é um campo da tabela e vai retornar o valor de lá, conforme está na instrução select.

falou.
Responder
  • Informação