Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Select de n elementos


Valdilei

Pergunta

Bom dia pessoal!

Tenho uma tabela com 15 campos e preciso buscar n elementos nesta tabela, ou seja, o elemento pode estar em qualquer campo. No entando cada linha retornada deve conter os n elementos que estou buscando. Ex: Suponham que desejo buscar os elementos 1 e 2 na minha tabela.

Estou procurando a linha que contem os elementos 1 e 2.

select * from fu where

a1=1 or a2=1 or a3=1 or a4=1 or a5=1 or a6=1 or a7=1 or a8=1 or a9=1 or a10=1 or a11=1 or a12=1 or a13=1 or a14=1 and a15=1 or a1=2 or a2=2 or a3=2 or a4=2 or a5=2 or a6=2 or a7=2 or a8=2 or a9=2 or a10=2 or a11=2 or a12=2 or a13=2 or a14=2 or a15=2 ;

Com este select acima é retornado a linha que contem o 1 ou o 2 e não o 1 e o 2.

Como seria o select para retornar a linha que tem 1,2, ......n elementos?

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Oi, 'Valdilei'!

Por favor passe exemplos de tres registros, com seus respectivos conteúdos (não precisa passar o nome correto da tabela nem dos campos. Apenas um exemplo de como a tabela a ser pesquisada foi montada e carregada.)

Link para o comentário
Compartilhar em outros sites

  • 0
Oi, 'Valdilei'!

Por favor passe exemplos de tres registros, com seus respectivos conteúdos (não precisa passar o nome correto da tabela nem dos campos. Apenas um exemplo de como a tabela a ser pesquisada foi montada e carregada.)

Oi Denis!

Tabela tab1

id a1 a2 a3

1 1 2 4

2 1 3 5

3 2 3 4

4 1 2 3

5 3 4 6

Bom se eu for buscar os elementos 1 e 2 o retorno deve ser a linhas 1 e 4.

Se for buscar os elementos 2 e 3, retorno linhas 3 e 4. Se for buscar os elementos 3 e 4 retorno, linhas 3 e 5.

Estou buscando a linha que contem todos os elementos.

Entendeu Denis?

Obrigado!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, 'Valdilei'!

Entendi. Queria um exemplo para facilitar a resposta.

Você pode usar a cláusula IN para realizar sua pesquisa.

Exemplo:

SELECT id, a1, a2, a3 
FROM tab1 
WHERE 1 IN (a1, a2, a3) AND 2 IN (a1, a2, a3)
Ou usar o que você já estava usando antes, quando postou este tópico: Exemplo:
SELECT id, a1, a2, a3  
FROM tab1
WHERE (a1=1 or a2=1 or a3=1) and  (a1=2 or a2=2 or a3=2);

Em qualquer dos casos a pesquisa vai rodar em TABLE SCAN (não usando índice e varrendo toda a tabela, mesmo que o resultado seja somente a 1a linha)

Link para o comentário
Compartilhar em outros sites

  • 0

Denis,

Muito obrigado!

Tinha conseguido fazer utilizando a segunda opção.

E no caso de buscar por um elemento que não está contido na tabela use:

SELECT id, a1, a2, a3

FROM tab1

WHERE 1 NOT IN (a1, a2, a3) AND 2 NOT IN (a1, a2, a3).

Valeu!!!!!!!!!!!!!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...