[firebase-br] RES: Duvida usando IN

Sandro Souza escovadordebits em gmail.com
Qui Dez 18 16:17:37 -03 2008


Bom dia/tarde Isael.

Só por curiosidade, você poderia verificar que sintaxe retorna o mesmo
resultado em menos tempo?

Essa que você está utilizando:

((l.cod_contrato,l.dat_lberacao) in
 (select cod_contrato,DATA_LIB from ITE_LIB_PATR_CONTR where sit_gerada is
null)) or
((l.cod_contrato,l.dat_lberacao) in
 (select cod_contrato,data_lib from ite_lib_produto_contr where sit_gerada
is null))

Ou essa:

((l.cod_contrato,l.dat_lberacao) in
 (select cod_contrato,DATA_LIB from ITE_LIB_PATR_CONTR where sit_gerada is
null
  union
  select cod_contrato,data_lib from ite_lib_produto_contr where sit_gerada
is null))

Na primeira, o Firebird tem que guardar dois resultados de SELECTs e
utilizá-los para as pesquisas.

Na segunda, o Firebird tem que guardar apenas um único resultado de SELECT,
e daí surgiu minha curiosidade em saber, em um caso real como o seu, se a
prática comprovaria a teoria.

2008/12/18 Isael Faria Junior <isael em stetika.com.br>

> ASSIM FUNCIONOU
>
>
> CREATE VIEW VW_CONTRATO_LIBERACAO(
>   COD_CONTRATO,
>   DATA,
>   CLIENTE,
>   ENDERECO,
>   CIDADE,
>   UF,
>   CONTATO,
>   OBS,
>   TIPO_DE_SERVICO,
>   REGIME_DE_TRABALHO)
> AS
> select a.cod_contrato,
>      l.dat_lberacao,
>      a.nome_cliente,
>      (select b.endereco from  obra b where b.id_obra = A.id_obra),
>      (select b.cidade from  obra b where b.id_obra = A.id_obra),
>      (select b.uf from  obra b where b.id_obra = A.id_obra),
>      a.nome_contato,
>      (select obs_liberacao from contratos where cod_contrato =
> a.cod_contrato) obs,
>       (select NOM_PREFIXO from proposta where COD_PROPOSta =
>        (select COD_PROPOSTA from contratos where cod_contrato =
> a.cod_contrato) and
>        cod_revisao = (select cod_revisao from contratos where cod_contrato
> = a.cod_contrato)),
>       (select c.periodo_trab from proposta c where COD_PROPOSta =
>        (select COD_PROPOSTA from contratos where cod_contrato =
> a.cod_contrato) and
>        cod_revisao = (select cod_revisao from contratos where cod_contrato
> = a.cod_contrato))
> from liberacao_adicional l inner join
>     VW_MANUTENCAO_CONTRATO a
> on l.cod_contrato = a.cod_contrato WHERE
> ((l.cod_contrato||l.dat_lberacao) in
>  (select cod_contrato||DATA_LIB from ITE_LIB_PATR_CONTR where sit_gerada is
> null)) or
> ((l.cod_contrato||l.dat_lberacao) in
>  (select cod_contrato||data_lib from ite_lib_produto_contr where sit_gerada
> is null))
> ;
>
> Sandro Souza escreveu:
>
>> Bom dia/tarde Isael.
>>
>>
>> Amigo, poderia enviar os exemplos que você testou e não deu certo?
>> Assim poderiamos te ajudar melhor.
>>
>> 2008/12/18 Isael Faria Junior <isael em stetika.com.br>
>>
>>
>>
>>> CONFORME ME MOSTRARAM O EXEMPO,
>>> VERIFIQUEI QUE JA FIZ DESSES MODOS POREM NÃO  FUNCIONA
>>> PODERIA SER LIMITAÇÃO DA VERSÃO ? USO FB 1.5
>>>
>>> Eliezer de Souza escreveu:
>>>
>>>
>>>
>>>> Select * from tabela
>>>> Where campo in (CONDICAO1,CONDICAO2)
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> -----Mensagem original-----
>>>> De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br
>>>> ]
>>>> Em
>>>> nome de Isael Faria Junior
>>>> Enviada em: quinta-feira, 18 de dezembro de 2008 10:19
>>>> Para: FireBase
>>>> Assunto: [firebase-br] Duvida usando IN
>>>>
>>>> Pessoal,
>>>>
>>>> como funciona no fb o comando in com duas condições ?
>>>>
>>>> ______________________________________________
>>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>>
>>>>
>>>> ______________________________________________
>>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>>
>>>> __________ Information from ESET Smart Security, version of virus
>>>> signature database 3698 (20081217) __________
>>>>
>>>> The message was checked by ESET Smart Security.
>>>>
>>>> http://www.eset.com
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>> ______________________________________________
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>
>>>
>>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>> __________ Information from ESET Smart Security, version of virus
>> signature database 3698 (20081217) __________
>>
>> The message was checked by ESET Smart Security.
>>
>> http://www.eset.com
>>
>>
>>
>>
>>
>>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista