Olá Pessoal, conto com a ajuda de voces para me ajudar a resolver esse problema:
Gostaria de ter a condição de listar todos os produtos se o usuário não informar o código ou apenas um produto individualmente caso o usuário informe o código.
SELECT * FROM produto WHERE condição
Desde já, agradeço.
Por que não cria duas queries separadas? Tem como fazer isso que você quer, mas fica “feio” e talvez seja ineficiente. Não sei se o query planner detecta que a comparação é desnecessária por causa do OR -1 = -1
, quando ele acontece, e elimina o WHERE por completo (espero que isso aconteça). Assim:
SELECT * FROM produto WHERE produto.id = id OR id = -1;
Quando o usuário não informar nada, você passa -1
pra query.
Faça assim:
SET @id = 1; // apenas para teste
SELECT * FROM tabela where @id is null OR id_tabela = @id;
Ao informar o ID, o select deverá retornar apenas o registro correspondente ao valor informado. Ao informar null para o ID e executar, deverá retornar todos os registros