Ir para conteúdo

Arquivado

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

neotheone

If e ELSE no MySQL

Recommended Posts

Fala galera olhem só minha consulta

 

query = "Select * FROM dados_pessoais dp, graduacao g, endereco_postal ep WHERE ("if &sexo& <> "" then" dp.sexo='"&sexo&"' AND "end if" g.graduacao_situacao='"&escolaridade&"' AND ep.bairro='"&bairro&"' AND ep.cidade='"&cidade&"' AND ep.estado='"&estado&"') AND dp.cpf=g.cpf "

set rs = conexao.execute(query)

 

 

Na parte vermelha to dizendo o seguinte, SE a varivel sexo for diferente de vazia ela entra na consulta SQL se for vazia ela nao entra.

 

Tem como fazer esse tratamento de if e else no mysql? nas consultas sql?

 

valewww

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigão,

 

Tem sim. . .mas a sintaxe é um pouco diferente, quando usamos em meio a um SELECT. Seria da seguinte forma:

 

SELECT IF(sexo <> '', 'RESPOSTA VERDADE', 'RESPOSTA FALSO');

 

Um detalhe é que, os campos mencionados na clásula WHERE não podem ser ALIAS ou outras referências, pois o WHERE busca os dados referente a campo real que existe na tabela, ou seja, seu IF no WHERE também não vai funcionar!

 

Refaça sua consulta abordando os campos que deseja trazer no SELECT, e confira com a estrutura considicional que eu lhe apresentei acima, aplicando a mesma ao campo sexo.

 

Qualquer outra dúvida, continue postando!! Abração!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Wagner, nao entendi muito bem como fazer, você poderia aplicar o que você me disse, nessa consulta aqui?

 

Eu quero que se a variavel sexo estiver vazia ela seja retirada da clausula SQL, a parte vermelha no caso

 

query = "Select dp.cpf, nome_completo FROM dados_pessoais dp, graduacao g, endereco_postal ep WHERE (sexo='"&sexo&"' AND graduacao_situacao='"&escolaridade&"' AND bairro='"&bairro&"' AND cidade='"&cidade&"' AND ep.estado='"&estado&"') AND dp.cpf=g.cpf "

set rs = conexao.execute(query)

Compartilhar este post


Link para o post
Compartilhar em outros sites

mysql> SELECT CASE 1 WHEN 1 THEN "um"
           WHEN 2 THEN "dois" ELSE "mais" END;
       -> "one"
mysql> SELECT CASE WHEN 1>0 THEN "verdadeiro" ELSE "falso" END;
       -> "true"
mysql> SELECT CASE BINARY "B" WHEN "a" THEN 1 WHEN "b" THEN 2 END;
       -> NULL

http://dev.mysql.com/doc/refman/4.1/pt/control-flow-functions.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho que o titulo do seu tópico causou duvidas nas respostas. Acredito que você queira testar no ASP se a variavel estiver com valor concatena no sql. Se você quer fazer IF no sql tens que fazer uma stored procedure ou usar o CASE. Segue exemplo com ASP

 

if sexo & "" <> "" then
 var = " dp.sexo='"&sexo&"' AND "
end if

query = "Select * FROM dados_pessoais dp, graduacao g, endereco_postal ep WHERE (" & var & " g.graduacao_situacao='"&escolaridade&"' AND ep.bairro='"&bairro&"' AND ep.cidade='"&cidade&"' AND ep.estado='"&estado&"') AND dp.cpf=g.cpf "

//EDIT

 

Agora que vi que o tópico foi ressuscitado hehehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

OI PESSOAL ESTAVA PROCURANDO ESTE TIPO DE PROCEDIMENTO NO MYSQL SE O CAMPO nome_empresa EXISTIR EXECUTA O AND É A MESMA PERGUNTA DO NOSSO AMIGO O PROBLEMA É QUE ESTOU USANDO VÁRIOS INNER JOINS E TEM CLIENTES QUE NÃO TEM NOME DE EMPRESA REGISTRADO NESTA TABELA MAS TENHO QUE MOSTRAR TODOS E TAMBÉM MOSTRAR OS QUE TEM EMPRESA CADASTRADAS COM O status=1

 

WHERE (r.dt_cad = '$data') AND (atend IN ('1','2')) if(nome_empresa IS NOT NULL) THEN AND (q.status = '1') GROUP BY r.id_reqs ORDER BY hora DESC

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.