Ir para conteúdo

POWERED BY:

Arquivado

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

Alexandre Corrêa

if dentro do select

Recommended Posts

Olá pessoal, tô precisando de uma ajuda de vocês, nem sei se é possivel... rs.ss

 

A questão é a seguinte: tenho um sistema para cadastro de curriculos e preciso fazer a consulta só que a pessoa pode fazer varias combinações, então não queria fazer os if externos pq se não seriam varios...

Tem como colocar o if dentro do select no where, ou qualquer outro tipo de condição.

 

tipo:

 

$sql="select * from curriculos where f_enfermagem='$f_enfermagem' and f_radiologia='$f_radiologia' and f_nutricao='$f_nutricao' and
c_nefrologia='$c_nefrologia' and c_ortopedia='$c_ortopedia' and c_enf_trabalho='$c_enf_trabalho' and c_uti='$c_uti' and
cursos_ingles='$cursos_ingles' and cursos_informatica='$cursos_informatica' and cursos_outros='$cursos_outros' and 
civilcurriculo='$civil' and sexocurriculo='$sexo' order by nomecurriculo LIMIT $inicial, $numreg";

queria colocar o if para ficar assim

select * from curriculos where if($f_enfermagem'=""){f_enfermagem='$f_enfermagem'}

 

me ajudem por favor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem como você fazer uma Stored Procedure e Rodar ela.

 

Mas eh melhor você tratar no PHP. Nem que seja muitos IF's.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem como usar o IF sim mas não entendi direito o que quer

 

mas veja se ajuda

 

http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem como usar o IF sim mas não entendi direito o que quer

 

mas veja se ajuda

 

http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html

 

o que eu quero é o seguinte:

tenho varios checkbox a pessoa vai marcando conforme achar melhor preciso fazer um select combinando os que foram marcados.

fiz um select com todos os campos só que não me retorna resultados pq alguns vão ser pesquisados como vazio, só que no banco de dados tem informação.

 

Deu para entender, sou um pouco confuso mesmo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda não entendi

 

voce seleciona algo com checkbox e que usar os selecionados na query, voce pode fazer isso diretamente na sql usando IN

 

WHERE CAMPO IN (valores_do_checkbox)

mas explique melhor pois está colocando as situações de forma muito vaga

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda não entendi

 

voce seleciona algo com checkbox e que usar os selecionados na query, voce pode fazer isso diretamente na sql usando IN

 

WHERE CAMPO IN (valores_do_checkbox)

mas explique melhor pois está colocando as situações de forma muito vaga

 

vou tentar explicar melhor...

 

tenho 6 opções para a pessoa selecionar marcando o checkbox: Sexo, Escolaridade, Estado Civil, Formação, Idiomas, Informatica.

eu quero que a consulta só seja feita com as que foram marcadas. Tipo marquei sexo, idiomas e informatica, então quero que a consulta seja

 

select * from candidatos where sexo='masculino' and idiomas='inglês' and informatica='basico'

 

Deu para entender?

Compartilhar este post


Link para o post
Compartilhar em outros sites

em SQL o if eh para bifurcar o valor de um campo e nao para ser utilizado no where, esse tipo de coisa q você quer fazer envolve CASE

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você está tentando fazer é um query dinâmico e o mysql não permite fazer isso. A solução que eu tenho usado nesse caso é, em função das selecções das caixas check, construir uma string com as caixas check seleccionadas pelo utilizador. Supõe que as selecções do utilizador são carregadas para um array do género

 

caixa_check[0]

caixa_check[1]

...

caixa_check[n]

 

Cada elemento deste array pode ter o valor 0 ou 1

 

 

O código seria mais ou menos esse:

$sql_string="";

if($caixa_check[0]==1) {
   $sql_string.="f_enfermagem='$f_enfermagem'";
}
if($caixa_check[1]==1) {
   if($sql_string!="") { $sql_string.=" AND "; }
   $sql_string.="f_radiologia='$f_radiologia'";
}
.......
if($caixa_check[n]==1) {
   if($sql_string!="") { $sql_string.=" AND "; }
   $sql_string.="f_nnnnnnn='$f_nnnnnnnnnn'";
}
Estes testes podem ter outra configuração, mas acho que dá para ver a ideia.

 

Com a construção da cadeia $sql_string você pode usar ela no query, assim

 

$sql="select * from curriculos where $sql_string order by nomecurriculo LIMIT $inicial, $numreg";
                                     ^^^^^^^^^^^

Não vejo outra forma de fazer o que você quer. Eu estou a usar este sistema constantemente e tem funcionado perfeitamente, mas você deve antes de mais reavaliar o seu problema e confirmar se o que precisa é mesmo de uma consulta dinâmica como essa.

No meu caso, todos os elementos da instrução SQL são variáveis, desde o número de campos e quais seleccionar, até ao número de tabelas de origem dos dados e quais. Só mesmo as relações entre tabelas estão definidas e é com base nisso que qualquer query é executado... LOUCURA

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.