[SQL]Dúvida

PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.

Moderadores: Administradores, Moderadores

[SQL]Dúvida

Mensagempor Low_Rider » Quarta Dez 07, 2005 18:38

Tenho a seguinte dúvida de SQL. Imaginemos que quero fazer uma pesquisa sobre um dado nome. Neste caso seria fácil, apenas faria

(...)
where nome = 'blablabla'

Agora imaginemos que caso o nome não fosse indicado a pesquisa deveria ser feita sobre todos os nomes. Como é que faço isso sem ter de repetir a querry toda e pôr um if?
Low_Rider
Novato
Novato
 
Mensagens: 17
Registado: Quinta Jan 20, 2005 15:58

Mensagempor Creative Byte » Quinta Dez 08, 2005 13:01

Boas,

Podes sempre ir criando numa variavel a query sql. Por exemplo, limpas a variavel indicas os campos que pretendes obter dados e na condição verificas quais os campos que pretendes colocar, se o campo do nome tem informação adicionas à variavel onde estás a criar a query caso o campo do nome não tenha informação não fazes nada e passas para o seguinte.
Creative Byte
Membro de Prata
Membro de Prata
 
Mensagens: 264
Registado: Quarta Mar 30, 2005 15:55

Mensagempor capricorn » Sexta Dez 09, 2005 10:20

(...)
WHERE nome LIKE '%texto%'

devolve todos os nomes que conteem 'texto' no meio
se texto for vazio devolve tudo
capricorn
Membro de Prata
Membro de Prata
 
Mensagens: 383
Registado: Sexta Ago 20, 2004 13:03
Localização: Porto

Mensagempor Creative Byte » Sexta Dez 09, 2005 12:37

Boas,

Capricorn, mas é uma solução de em termos de performance não é muito recomendado e não podes confiar nos resultados quando necessitas de uma pesquisa mais exacta.
Creative Byte
Membro de Prata
Membro de Prata
 
Mensagens: 264
Registado: Quarta Mar 30, 2005 15:55

Mensagempor capricorn » Sexta Dez 09, 2005 14:31

em termos de performance apenas se nota quando a tabela tem milhões de registos, o que na maior parte dos casos não se verifica.
capricorn
Membro de Prata
Membro de Prata
 
Mensagens: 383
Registado: Sexta Ago 20, 2004 13:03
Localização: Porto

Mensagempor bap_man » Sexta Dez 09, 2005 15:09

Se percebi a questão ... penso que precisas de uma condição verdadeira.

Assim poderás ter :

where ((nome like '%variavel%' and variavel is not null) or
variavel is null)

temos portanto duas situações verdadeiras:

(nome like '%variavel%' and variavel is not null) - obtém todos os registos que contêm o valor da variável

variavel is null - trás todos os registos.

Podes substituir like '%variavel%' por = variavel

Espero ter ajudado.
bap_man
Novato
Novato
 
Mensagens: 3
Registado: Sexta Dez 09, 2005 10:43


Voltar para Programação

Quem está ligado:

Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante

cron