Como fazer esta sql

Delphi

05/02/2006

Boa tarde a todos.

Para fazer uma consulta de todos os clientes que compraram na minha empresa eu faço a seguinte instrução sql:
Select nome_cliente from clientes where exists(select * from vendas where vendas.codigo_cliente = clientes.codigo);
Até ai esta tudo bem o problema é que eu presciso fazer uma consulta que saia todos os clientes cadastrados e se o clientes tiver feito uma compra o sistema marca ele com um asterisco(*). Como fazer isto em sql.

Eu uso Delphi 7, dbExpress, Interbase e Fortes Report....

Desde já muito obrigado pela ajuda...

Luciano Ramos


Luciano.sul

Luciano.sul

Curtidas 0

Respostas

Thomaz_prg

Thomaz_prg

05/02/2006

Amigo no Firebird daria pra ser asim:

Select 
Case
  when exists(select * from vendas where vendas.codigo_cliente = clientes.codigo) then ´*´
  else ´ ´
end as Comprou, nome_cliente from clientes; 


Dessa forma, você teria um campo que mostraria se o cliente comprou ou não.


GOSTEI 0
Luciano.sul

Luciano.sul

05/02/2006

Obrigado Thomaz_prg pela ajuda vou testar em casa a noite... :D


GOSTEI 0
Luciano.sul

Luciano.sul

05/02/2006

Estranho se eu fizer esta operacao no IBConsole funciona e se eu fizer na query funciona mas se eu fizer em tempo de execução dentro do meu sistema nao funciona, da este erro na hora de compilar. Exemplo:

SQLQuery1.Close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add(´Select Case when exists(select * from´);
SQLQuery1.SQL.Add(´ vendas here vendas.codigo_cliente´);
SQLQuery1.SQL.Add(´ = clientes.codigo) then ´*´ else ´ ´ ´);
SQLQuery1.SQL.Add(´ end as Comprou, nome_cliente from clientes´);
SQLQuery1.Open;

O Delphi me da o seguinte erro.
[Error] Unit1.pas(37): Operator not applicable to this operand type

Oque pode ser???? :oops:

Desde ja muito obrigado...


GOSTEI 0
Thomaz_prg

Thomaz_prg

05/02/2006

Tenta assim:

SQLQuery1.Close; 
SQLQuery1.SQL.Clear; 
SQLQuery1.SQL.Add(´Select´);
SQLQuery1.SQL.Add(´  Case 
SQLQuery1.SQL.Add(´    when exists(select * from vendas
SQLQuery1.SQL.Add(´    where vendas.codigo_cliente = clientes.codigo) ´
SQLQuery1.SQL.Add(´    then ´+QuotedStr(´*´)+´ else ´+QuotedStr(´ ´) ); 
SQLQuery1.SQL.Add(´ end as Comprou, nome_cliente from clientes´); 
SQLQuery1.Open; 



GOSTEI 0
Luciano.sul

Luciano.sul

05/02/2006

ok vou testar.
Novamente obrigado pela ajuda... :D


GOSTEI 0
POSTAR