Dúvida IF e ELSE

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
jerry-sc
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 45
Registrado em: Ter, 01 Nov 2011 1:24 pm

Bom dia pessoal,

Eu tenho uma view que tem um campo chamado IMAGEM.

Acontece o seguinte: na tabela WEB_ESTAMPA onde está gravado o campo IMAGEM, possui os campos CÓDIGO e ESTAMPA.

Eu preciso comparar na view, se o campo WEB_ESTAMPA.CODIGO for VAZIO, ele vai buscar o campo WEB_ESTAMPA.ESTAMPA e comparar com um campo na view e o contrário disto que escrevi também.

Eu pensei em fazer um CASE WHEN depois do FROM TABELA, mas isso não funciona.

Alguém tem noção de como resolver isso. Não sei se ficou claro, qualquer coisa, perguntem aí.

Obrigado!!
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother, o texto ficou meio confuso.

Passa mais detalhes pra gente.

Essa tabela, possui a estrutura abaixo?

Selecionar tudo

Tabela:
WEB_ESTAMPA

Campos:
IMAGEM
CÓDIGO
ESTAMPA.
E a view, é sobre qual tabela? quais os campos que ela exibe?
jerry-sc
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 45
Registrado em: Ter, 01 Nov 2011 1:24 pm

Selecionar tudo

 WEB_ESTAMPA
CODIGO
CD_ESTAMPA
IMAGEM
Nesta tabela, a "PK" pode ser ou o campo CODIGO ou o CD_ESTAMPA.

Até aí OK, quando o campo CODIGO não for preenchido, o campo CD_ESTAMPA será preenchido.

Na minha VIEW, eu preciso tratar justamente isso. Preciso trazer o campo imagem de todos os registros para minha view. Porém, eu preciso comparar o campo CODIGO ou então quando ele estiver vazio, comparar com o CD_ESTAMPA.

Se não ficou claro, me avisa por aqui. Talvez minha expressão está meio confusa.

Obrigado.
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Pelo que entendi:
Existe uma view que possui esses códigos, e você quer juntar com a tabela e mostrar a imagem??
jerry-sc
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 45
Registrado em: Ter, 01 Nov 2011 1:24 pm

Justamente, existe a VIEW com os campos CÓDIGO e CD_ESTAMPA.

Obrigado.
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Bem,
se o problema é porque não traz retorno algum é porque você esta comparando algo(ou codigo ou estampa) com NULL.

Se TODAS informações da view possuir correspondencia com essa tabela(WEB_ESTAMPA), e consequentemente possuir imagem, então pode resolver seu problema com apenas um simples(4 na verdade) NVL().

Selecionar tudo

Select v.* , we.imagem
  from "view" v , WEB_ESTAMPA we
 where nvl(v.cod,0) = nvl(we.cod,0)
   and nvl(v.estampa,0) = nvl(we.estampa,0)
Caso exista informação na view que possa não ter IMAGEM/correspondencia na tabela(WEB_ESTAMPA), pode usar um "artifício" para usar o outter join.
Faça um select de cada tabela , substituindo o null por algum valor , como por exemplo zero. Aí sim poderás fazer a junção.
Tipo:

Selecionar tudo

SELECT v.* , we.IMAGEM FROM
(Select NVL(cod,0) cod
     , NVL(estampa,0) estampa
     , .... 
  from "view") v,
(Select NVL(cod,0) cod
      , NVL(estampa,0) estampa
      , IMAGEM
      , .... 
  from WEB_ESTAMPA) we
 where v.cod = we.cod (+)
   and v.estampa = we.estampa (+)  
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 9 visitantes