[firebase-br] SELECT COM UNION

Marco Antonio Albuquerque marcksystem em hotmail.com
Dom Abr 29 10:16:54 -03 2007


Olá,

Fiz o teste o erro da justamente na instrução case no subselect que no 
primeiro bloco (tabela A) o codigo da tabela é do tipo integer e do segundo 
bloco varchar gerando o erro de datatype, ja fiz cast de todas as formas 
possiveis e não resolveu.

SELECT campo_1,
> >  case campo_1
> >    when x then (Select nome from tabela_M
                             where tabela_M.Codigo = cast(Tabela_A.codigo as 
integer)
> >    when y then (Select nome from tabela_N
> >                        where tabela_N.Codigo =cast(Tabela_A.codigo as 
>integer)
> >    end as descricao
> > from Tabela_A
> > union all
> > SELECT campo_1,
> >  case campo_1
> >    when x then (Select nome from tabela_O
                             where tabela_O.Codigo = cast(Tabela_B.codigo as 
integer)
> >    when y then (Select nome from tabela_P
> >                        where tabela_P.Codigo =cast(Tabela_B.codigo as 
>integer)
> >    end as descricao
> > from Tabela_B
> > From: "Renato Deggau" <rdeggau em gmail.com>
>Reply-To: FireBase <lista em firebase.com.br>
>To: FireBase <lista em firebase.com.br>
>Subject: Re: [firebase-br] SELECT COM UNION
>Date: Sat, 28 Apr 2007 18:48:25 -0300
>
>Marco, entendi que rodando os selects separados não dá erro; o que estou
>sugerindo e rodar COM o UNION mas tirando alguns campos
>
>Considerando o select que mandasses agora, roda assim (coniserando que "--"
>são linhas comentadas:
>
>SELECT campo_1
>--,
>--            case campo_1
>--               when x then (Select nome from tabela_M
>--                                         where tabela_M.Codigo
>=Tabela_A.codigo)
>--               when y then (Select nome from tabela_N
>--                  where tabela_N.Codigo = Tabela_A.codigo)
>--            end as descricao
>   from Tabela_A
>union all
>SELECT campo_1
>--,
>--            case campo_1
>--               when x then (Select nome from tabela_O
>--                                         where tabela_O.Codigo
>=Tabela_B.codigo)
>--               when y then (Select nome from tabela_P
>--                                         where tabela_P.Codigo
>=Tabela_B.codigo)
>--            end as descricao
>   from Tabela_B
>
>
>Se o select acima funcionar,voce sabe que não é com o campo_1 o problema e
>assim sucessivamente; e dai vai incluindo o segundo, o terceiro e o quarto
>campo em ambas as querys
>
>Renato
>
>On 4/28/07, Marco Antonio Albuquerque <marcksystem em hotmail.com> wrote:
> >
> > ja fiz, rodando separado do union ambos rodam certinho.
> > A estrutura simplificada seria mais ou menos assim...
> >
> > SELECT campo_1,
> >              case campo_1
> >                 when x then (Select nome from tabela_M
> >                                           where tabela_M.Codigo =
> > Tabela_A.codigo)
> >                 when y then (Select nome from tabela_N
> >                                           where tabela_N.Codigo =
> > Tabela_A.codigo)
> >              end as descricao
> >    from Tabela_A
> > union all
> > SELECT campo_1,
> >              case campo_1
> >                 when x then (Select nome from tabela_O
> >                                           where tabela_O.Codigo =
> > Tabela_B.codigo)
> >                 when y then (Select nome from tabela_P
> >                                           where tabela_P.Codigo =
> > Tabela_B.codigo)
> >              end as descricao
> >    from Tabela_B
> >
> > Acho que assim fica mais claro...
> >
> > Agradeço
> >
> >
> > >From: "Renato Deggau" <rdeggau em gmail.com>
> > >Reply-To: FireBase <lista em firebase.com.br>
> > >To: FireBase <lista em firebase.com.br>
> > >Subject: Re: [firebase-br] SELECT COM UNION
> > >Date: Sat, 28 Apr 2007 18:06:57 -0300
> > >
> > >Marco,
> > >
> > >é dificil assim no visual, mas uma alternativa seria voce comentar 
>todos
> > os
> > >campos (menos 1) nas 2 querys junto com o UNION; roda e ve se funciona; 
>e
> > >assim vai sucessivamente liberando 1 a 1 até descobrir onde está a
> > >inconsistencia
> > >
> > >
> > >Ou seja, na primeira execucao voce só rodaria o
> > >SELECT cons.ID_CAD001
> > >-----
> > >----
> > >UNION ALL
> > >SELECT s.ID_CAD001
> > >-----
> > >
> > >
> > >Renato Deggau
> > >
> > >On 4/28/07, Marco Antonio Albuquerque <marcksystem em hotmail.com> wrote:
> > > >
> > > > Boa tarde colegas,
> > > >                         será que alguem poderia me ajudar num select
> > >meio
> > > > complicado? Acontece o seguinte, tenho um select de uma tabela A com
> > >union
> > > > em outra B em ambas tenho uma condição case que faz um subselect em
> > > > diversas
> > > > tabelas. Se rodo separado do union as duas funcionam bem, porém com 
>a
> > > > junção
> > > > UNION da erro de Data type unknown. Tentei resolver isso usando cast
> > nos
> > > > possíveis campos porém não deu certo. Alguém teria alguma idéia
> > > >
> > > >
> > >______________________________________________
> > >FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > >Para editar sua configuração na lista, use o endereço
> > >http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> > >Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> > _________________________________________________________________
> > Verificador de Segurança do Windows Live OneCare: verifique já a 
>segurança
> > do seu PC! http://onecare.live.com/site/pt-br/default.htm
> >
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para editar sua configuração na lista, use o endereço
> > http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>Para editar sua configuração na lista, use o endereço 
>http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>Para consultar mensagens antigas: http://firebase.com.br/pesquisa

_________________________________________________________________
Descubra como mandar Torpedos do Messenger para o celular! 
http://mobile.msn.com/





Mais detalhes sobre a lista de discussão lista