Como fazer esta sql
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
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
Curtidas 0
Respostas
Thomaz_prg
05/02/2006
Amigo no Firebird daria pra ser asim:
Dessa forma, você teria um campo que mostraria se o cliente comprou ou não.
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
05/02/2006
Obrigado Thomaz_prg pela ajuda vou testar em casa a noite... :D
GOSTEI 0
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...
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
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
05/02/2006
ok vou testar.
Novamente obrigado pela ajuda... :D
Novamente obrigado pela ajuda... :D
GOSTEI 0