Alex, seguinte... primeiramente você deve manter um SELECT bem legível senão
você mesmo acaba se perdendo nele, ai fica difícil a compreensão...ok

Bem, o que eu sugiro é fazer um SELECT usando UNION

 

Antes, peço que procure usar apelidos curtos para as tabelas na clausula
FROM isso faz com que seu SELECT fique menor e mais legível , e também não
se esqueça de que as colunas que você colocar na clausula SELECT você deve
manter uma condição na clausula WHERE senão você vai fazer um acesso FULL na
tabela em questão, como é o caso do SELECT que você postou...

Outra coisa importante... não deixe de colocar parâmetros na clausula WHERE
para diminuir a quantidade de registro de sua pesquisa... notei abaixo que
você ta querendo trazer todos os registros ... cuidado hein !

 

Como não sei a estrutura de suas tabelas vou colocar um exemplo e você
ajusta ele conforme suas necessidades...

Note que abaixo tem dois SELECTs quase iguais..a única mudança foi na
clausula WHERE onde você passa a fazer um acesso a tabela de clientes pessoa
jurídica

Esse instrução vai pegar dados da tabela de vendas pessoa fisica no período
de vencimento especificado abaixo e seus clientes e juntar com os dados da
de clientes pessoa jurídica ...

Note que os nome das colunas devem ser os mesmo...ok... caso preciso mudar
alguma coisa pode usar um ALIAS (Apelido)

 

Espero ter ajudado !

 

 

Exemplo :

 

Select  a.cod_empresa, 

              a.nom_empresa, 

              b.cod_cliente, 

              b.dat_vencimento,

              b.vlr_vencimento, 

              c.nom_cliente

>From  empresa a, 

              vendasPF b, 

              cliente c

where b.dat_vencimento >= ‘01/12/2009’

and      b.dat_vencimento <= ‘01/01/2010’

and      c.cod_cliente              = b.cod_cliente

and     a.cod_empresa           = b.cod_empresa

order by b.dat_vencimento, b.cod_cliente

union

Select  a.cod_empresa, 

              a.nom_empresa, 

              b.cod_cliente, 

              b.dat_vencimento,

              b.vlr_vencimento, 

              c.nom_cliente

>From  empresa a, 

              vendasPJ b, 

              cliente c

where b.dat_vencimento >= ‘01/12/2009’

and      b.dat_vencimento <= ‘01/01/2010’

and      c.cod_cliente              = b.cod_cliente

and     a.cod_empresa           = b.cod_empresa

order by b.dat_vencimento, b.cod_cliente


 

 

De: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] Em
nome de asandro1501
Enviada em: sexta-feira, 8 de janeiro de 2010 01:01
Para: delphi-br@yahoogrupos.com.br
Assunto: [delphi-br] mesma coluna do dbgrid para tabelas diferentes

 

  

Olá Pessoal

Estou pedindo ajuda novamente.

Estou montando um resumo de caixa e o cliente quer que apareça o nome de
quem está pagando, como existem dois cadastros ( pessoa física e pessoa
juridica) gostaria de achar alguma maneira de utilizar a mesma coluna do
dbgrid para aparecer o "nome do cliente" e o "nome fantasia". É mais uma
questão de estética mesmo.

Utilizei o código sql abaixo mas to pensando em utilizar o left join e o
rigth join para ficar melhor.

select cod_boletopf, codvendapf, n_parcela, vencimento, pagamento,
vlrmensal, usuario, vendapf.codcli, clientes.nome as nome, nomefantasia as
nome from boletopf, vendapf,clientes, empresa
where codvendapf=cod_vendapf and vendapf.codcli=clientes.cod_cli or
vendapf.codcli=cod_emp group by cod_boletopf

Agradeço desde já

Alex Silva





[As partes desta mensagem que não continham texto foram removidas]

Responder a