Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

edipoRei

[Resolvido] procedure para filtro

Recommended Posts

Ola,

 

Estou utilizando asp e o sql server.

 

Tenho uma página com uma tabela e estou tentando fazer um filtro.

O filtro consistirá de duas tags <select> que representam duas colunas da minha tabela.

Ao escolher determinado valor dos selects, a tabela deverá mostrar apenas os valores correspondentes.

 

o seguinte código:

 

<select id="nome">

<option value="0">TODAS</option>

<option value="1">A</option>

<option value="2">B</option>

</select>

 

<select id="endereco">

<option value="0">TODAS</option>

<option value="1">C</option>

<option value="2">D</option>

</select>

 

A minha duvida é como tratar essas variáveis na procedure...

 

Por exemplo se eu selecionar no select nome a oção "A" e no select endereco selecionar a opção C

na procedure basta fazer:

select * from tbl where nome=@nome and endereco=@endereco

 

O problema é quando escolha a opção TODAS...

Se enviar este valor para a prc ele irá parar na clausula where fazendo não retornar valor algum...

 

O que faço?

Testo os valores das variáveis e faço quatro selects?

EX:

select * from tbl;

select * from tbl where nome=@nome and endereco=@endereco;

select * from tbl where nome=@nome;

select * from tbl where endereco=@endereco

 

Não gostaria de fazer isso , pois posteriormente posso ter que aumentar a quantidade de selects

ow a estrutura da tabela...

 

Teria uma outra maneira????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se entendi muito bem mas não seria o caso de se usar OR ao invés de AND ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se entendi muito bem mas não seria o caso de se usar OR ao invés de AND ?

 

Provavelmente não.

Por exemplo se eu selecionar no select nome a oção "A" e no select endereco selecionar a opção "C"

os dados que serão puxados do banco serão os que tiverem com o valor "A" na coluna equivalente ao nome

e que também possuirem o valor "C" na coluna equivalente ao endereco.

 

O que eu não queria era ter que testar se o valor das variáveis referentes ao nome e ao endereco.

 

Por exemplo:

if( (endereco == TODAS) && (nome == TODAS) )

select * from tbl;

 

if( (endereco != TODAS) && (nome != TODAS) )

select * from tbl where nome=@nome and endereco=@endereco;

 

if( (endereco == TODAS) && (nome != TODAS) )

select * from tbl where nome=@nome;

 

if( (endereco != TODAS) && (nome == TODAS) )

select * from tbl where endereco=@endereco

 

A sintaxe naum está correta, é apenas um exemplo!

Isto é o que eu não gostaria de fazer!

 

Preciso de uma solução em sql!

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta assim:

select * from tbl where (nome=@nome or @nome='TODAS') and (endereco=@endereco or @endereco='TODAS') ;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.