GARANTIR DESCONTO

Fórum Consulta MySQL utilizando 3 campos, mas nem todos são utilizados na pesquisa. #590789

23/01/2018

0

SQL

Olá pessoal...

Tenho a demanda de um formulário de pesquisa com 3 campos (ID, nome e e-mail), porém o usuário não precisa preencher os 3 campos. Ele pode preencher 1 dos 3 e não consigo fazer a consulta me trazer apenas os registros que o usuário digita... o resultado é a exibição de TODOS os dados armazenados na tabela...

Como resolver esse pepino?!

Abaixo o código:


SELECT *
FROM clientes
WHERE id = id_clt OR nome LIKE nome_clt% OR email LIKE email_clt%


Obrigado!
Myller Meireles

Myller Meireles

Responder

Post mais votado

24/01/2018

Será necessário uma pequena alteração.

SELECT *
FROM clientes
WHERE (id_clt=0 OR id=id_clt) AND (nome_clt='' OR nome LIKE '%nome_clt%') AND (email_clt='' OR email LIKE '%email_clt%')

Emerson Nascimento

Emerson Nascimento
Responder

Gostei + 1

Mais Posts

23/01/2018

Alec Candia

Fiquei em dúvida se o correto da sintaxe é como você postou. Tente isso:

SELECT *
FROM clientes
WHERE id = id_clt OR nome LIKE '%nome_clt%' OR email LIKE '%email_clt%'

Apenas acrescentei aspas simples antes e depois da condição do LIKE.
Responder

Gostei + 0

24/01/2018

Myller Meireles

Fiquei em dúvida se o correto da sintaxe é como você postou. Tente isso:

SELECT *
FROM clientes
WHERE id = id_clt OR nome LIKE '%nome_clt%' OR email LIKE '%email_clt%'

Apenas acrescentei aspas simples antes e depois da condição do LIKE.


Alec,

Obrigado por sua resposta. A forma que postei foi uma das várias possibilidades que testei e não consegui o resultado que quis.

A sua sugestão, também já tinha testado antes e não deu certo!

Mas, muito obrigado por sua ajuda!
Responder

Gostei + 0

24/01/2018

Myller Meireles

Será necessário uma pequena alteração.

SELECT *
FROM clientes
WHERE (id_clt=0 OR id=id_clt) AND (nome_clt='' OR nome LIKE '%nome_clt%') AND (email_clt='' OR email LIKE '%email_clt%')


Emerson,

Muito bom cara!

Sua sugestão me deu outra visão para problemas como esse.

Fis apenas uns ajustes como segue abaixo:

SELECT *
FROM clientes
WHERE (clt_id = 0 OR clt_id = id_clt) OR (clt_nome = '' OR clt_nome LIKE %nome_clt%) OR (clt_email ='' OR clt_email LIKE %email_clt%)
ORDER BY clt_nome ASC


Você sugeriu o AND entre as condições, mas o resultado que precisa foi alcançado colocando o OR...

Muito obrigado por sua ajudar!!!
Responder

Gostei + 0

24/01/2018

Myller Meireles

Será necessário uma pequena alteração.

SELECT *
FROM clientes
WHERE (id_clt=0 OR id=id_clt) AND (nome_clt='' OR nome LIKE '%nome_clt%') AND (email_clt='' OR email LIKE '%email_clt%')


Emerson,

Muito bom cara!

Sua sugestão me deu outra visão para problemas como esse.

Fiz apenas uns ajustes como segue abaixo:

SELECT *
FROM clientes
WHERE (clt_id = 0 OR clt_id = id_clt) OR (clt_nome = '' OR clt_nome LIKE %nome_clt%) OR (clt_email ='' OR clt_email LIKE %email_clt%)
ORDER BY clt_nome ASC


Você sugeriu o AND entre as condições, mas o resultado que precisa foi alcançado colocando o OR...

Muito obrigado por sua ajudar!!!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar