Codigo SQl para não exibir dados

Firebird

19/01/2004

Select P.codigo, P.descricao, P.Quant, E.Quant as Estoque, Sum(P.Quant-E.Quant) as QuantPedir From Estoque E, Pedido P where P.codigo = E.Codigo Group by P.codigo, P.descricao, P.Quant, E.Quant


Como faço para não exibir os dados do campo ´QuantPedir´ quando for menor ou igual a zero.


Select P.codigo, I.descricao, P.Quant, E.Quant as Estoque, Sum(P.Quant-E.Quant) as QuantPedir From Estoque E, Pedido P, Cad_Itens where P.codigo = E.Codigo and P.Codigo = I.Codigo Group by P.codigo, I.descricao, P.Quant, E.Quant


Se não existir um registro em uma das tabelas não exibirá nada mas eu gostaria que exibisse em branco como faço?


Marbravo

Marbravo

Curtidas 0

Respostas

Afarias

Afarias

19/01/2004

|Como faço para não exibir os dados do campo ´QuantPedir´ quando for
|menor ou igual a zero.

Se estiver usando FB 1.5 vc pode usar CASE e NULLIF

se não, UDF


|Se não existir um registro em uma das tabelas não exibirá nada mas eu
|gostaria que exibisse em branco como faço?

LEFT JOIN ou FULL JOIN ??


T+


GOSTEI 0
Marbravo

Marbravo

19/01/2004

Se estiver usando FB 1.5 vc pode usar CASE e NULLIF se não, UDF


Uma UDF é uma dll que eu declaro no FireBird(Migrei para 1.0.3) e quando for puxar o select utilizo, mas ainda não está claro. Se não for pedir de mais, será que vc poderia colocar o codigo de como devo fazer.

LEFT JOIN ou FULL JOIN ??


Eu tentei usar, mas não deu certo, a consulta fica processando, processando, processando... e nada ai eu tenho que finalizar. Talvez seria por que tentei usar mais do que uma tabela na consulta. Se realmente for isso como devo fazer a consulta abaixo?

Select P.codigo, I.descricao, P.Quant, E.Quant as Estoque, Sum(P.Quant-E.Quant) as QuantPedir From Estoque E, Pedido P, Cad_Itens where P.codigo = E.Codigo and P.Codigo = I.Codigo Group by P.codigo, I.descricao, P.Quant, E.Quant


Muito Obrigado
MarBravo


GOSTEI 0
Afarias

Afarias

19/01/2004

|Uma UDF é uma dll que eu declaro no FireBird(Migrei para 1.0.3) e
|quando for puxar o select utilizo, mas ainda não está claro. Se não for
|pedir de mais, será que vc poderia colocar o codigo de como devo fazer.

digamos q vc faz uma função q recebe um parâmetro INTEIRO e retorna outro INTEIRO -- se o valor do parâmetro for <= X então retorna 0 (ou NULL) caso contrário, retorna o valor do parâmetro!

então, vc poderia declarar no FB e fazer::

select funcao_tal(nome_do_campo) from nome_tabela

mas, vc tb pode usar um Stored Procedure pro seu caso (acho até melhor -- udfs são ´perigosas´) -- ex::

set term ^;
create procedure teste1 returns (campo1 varchar(10), campo2 integer) as
begin
  for select campo1, campo2 from sua_tabela into :campo1, :campo2 do
  begin
    if (campo1 < 5) then
      campo1 = null;
    suspend;
  end
end^


pronto! bem simples, não??

quanto ao left join -- vc tentou algo assim::

Select P.codigo, I.descricao, P.Quant, E.Quant as Estoque, Sum(P.Quant-E.Quant) as QuantPedir
From Estoque E left join Pedido P on (E.Codigo = P.codigo)
left join Cad_Itens I on (P.Codigo = I.Codigo)
Group by P.codigo, I.descricao, P.Quant, E.Quant



T+


GOSTEI 0
POSTAR