Se mandar o ID, lista um. Se mandar nulo, lista todos. Eficiência máxima

preview_player
Показать описание
Fala pessoal, blz??

Aaah, aquela situação em que você tem um campo para informar o ID do produto, mas se não preencher deve listar todos os produtos.. Simples mas dá trabalho, né? Não do jeito que to mostrando neste vídeo! Vem ver!

Tenham um ótimo vídeo! Forte abraço!!

/************************************************************
************************************************************/

#mqfs #firebirdsql #firebird #database #sql
Рекомендации по теме
Комментарии
Автор

Édson sempre tem uma mágica nova para nos ensinar. Aplausos.

urmenyi
Автор

Sugestão:
power(2, 31)-1 id_fim
para determinar o tamanho máximo do int.
Mais uma vez uma forma bem criativa que eu nunca tinha visto antes.
Eu provavelmente correria para um case:
select
c.id_cliente, c.razao_social, c.nome_alternativo
from clientes c
where
c.id_cliente between
case
when :p_id_fornecido is null then 0 else :p_id_fornecido
end and
case
when :p_id_fornecido is null then power(2, 31)-1 else :p_id_fornecido
end

Isnull, coalesce, nullif, iff seria tambem sugestões válidas dependendo do banco ao inves do case/when

gladistonsantana
Автор

Muito top. Edson, cada dia você puxa um coelho da cartola. Parabéns!

joelcosta
Автор

Fala professor!
Tenho acompanhado seus vídeos e aprendendo muito.
Nesta dica gostaria de contribuir com algo mais simples e performático creio eu, funciona pra versão 3.0 e adiante.
Conceito as cláusulas do Firebird não tem que relacionar necessariamente com os dados buscados.
Como eu faço:
Select * from produto p
Where ((p.id = :pid) or (cast(:pid as integer) is null))
Relevem qqr erro bobo, o cast se faz necessário por causa da aplicação geralmente.
Fiquem com Deus

wellingtonsouza
Автор

Porque você não me ensinou isso 10 anos atras??? Kkkk. Otima dica.

silviayazbek
Автор

O código abaixo resolve de um modo muito mais simples:

select p.id,
p.descricao
from produto p
where
(p.id = :pID)
or
(0 = coalesce(:pID, 0));

afherculano
Автор

Ola, eu normalmente utilizo a seguinte forma: "SELECT * FROM produto
WHERE id_produto = :id OR :id IS NULL " . Porem nunca avaliei a performance.

gustavorodrigues