[firebase-br] Select com IN usando várias opções?

Sandro Souza escovadordebits em gmail.com
Qui Maio 21 08:48:21 -03 2009


Bom dia/tarde Jhosef.

Grande Jhosef, existem duas formas de se fazer esse tipo de consulta, uma
mais complexa e outra mais simples. Vamos às duas:

1 - Forma mais complexa:

Crie uma subquery com a união dos valores fixos.

SELECT * FROM TABELA WHERE (CAMPO1,CAMPO2,CAMPO3)IN(
  SELECT 1,1,2 FROM RDB$DATABASE
  UNION
  SELECT 2,3,2 FROM RDB$DATABASE
  UNION
  SELECT 1,2,2 FROM RDB$DATABASE);

2 - Forma mais simples:

Transforme mais de um campo/coluna em uma expressão única.

SELECT * FROM TABELA WHERE (CAMPO1||';'||CAMPO2||';'||CAMPO3)IN(
'1;1;2','2;3;2','1;2;2');

São apenas sugestões. Com certeza os outros colaboradores devem ter soluções
melhores.

Espero ter ajudado mais que atrapalhado. :D

2009/5/21 Jhosef Marks <jhosef em gmail.com>

> Bom dia a todos, é o seguinte.
> Eu tenho um tabela que tem 3 campos como chave primária (coisa do antigo
> "DBA") e tem um caso onde é selecionado alguns registros.
>
> Se minha chave fosse única, seria simples, usaria um "Select * from TABELA
> where CAMPO1 in (1, 3, 4, 7) e me resultaria
>
> 1 Registro_1
> 3 Registro_3
> 4 Registro_4
> 7 Registro_7
>
> Acontece q na minha tabela eu tenho CAMPO1, CAMPO2, CAMPO3 como chave, tem
> como fazer mais ou menos isso aqui no select
>
> Select * from TABELA where CAMPO1, CAMPO2, CAMPO3 IN ([1,1,2], [2,3,2],
> [1,2,2])
>
> Para me devolver
>
> 1 1 2 Registro_1_1_2
> 2 3 2 Registro_2_3_2
> 1 2 2 Registro_1_2_2
>
> Ou pelo menos obter o mesmo efeito???
>
> Vlw
>
> --
> _________________________________________
> Jhosef Marks de Carvalho
> Delphi Developer
> Blog: http://www.jhosefmarks.com.br/
> Lista: http://groups.google.com/group/soumaisdelphi
>
> #####################################################################
> CAMPANHA POR UMA INTERNET SEGURA
> Proteja o endereço de seus amigos como estou protegendo o seu. Ao enviar
> mensagens use SEMPRE o "Cco" (cópia oculta).
> Assim TODOS os endereços estarão preservados. E, claro, antes de encaminhar
> um e-mail, delete todas as informações que apareçam no corpo do e-mail e
> que
> possam ser usadas por hackers.
> #####################################################################
> Sent from Joinville, Santa Catarina, Brasil
> ______________________________________________
> 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