GARANTIR DESCONTO

Fórum Consulta com Relacionamento #267959

10/02/2005

0

como faço para relacionar em sql, quatro tabelas que mostre todos os registros das quatro tabelas especificas que contém o mesmo código chave
Ex:

TblCliente, TblEndereco, TblFone, TblObs

O Campo chave primaria para relacionamento é CodCliente em cada Tabela.

Fiz assim :
AdoQuery1.Sql.Add(´Select C.*, E.Endereco, E.Bairro, E.Cep, E.UF, E.Cidade,´);
AdoQuery1.sql.add(´F.FoneResidencial, F.FoneCelular, O.Observacao´);
ADOQuery1.Sql.add(´from TblCliente C, TblEndereco E, TblFone F, TblObservacao O´);
AdoQuery1.Sql.Add(´Where C.CodCliente = :PesqCod´);
ADOQuery1.SQL.Add(´And C.CodCliente = E.CodCliente´);
ADOQuery1.SQL.Add(´And C.CodCliente = F.CodCliente´);
ADOQuery1.SQL.Add(´And C.CodCliente = O.CodCliente´);

Desse jeito só mostrado os registros se todas tabelas o contér. Caso uma delas não tenha registro para o codigo especicado ´:PesqCod´ que é um parametro que estou passando, não me é retornado nada das outras. Como se não existisse registro nas outras tabelas.

Por favor ajude-me


Vangellis

Vangellis

Responder

Posts

10/02/2005

Aroldo Zanela

Colega,

Qual é o banco de dados? Use [b:f308d7619b]Left [/b:f308d7619b]<outer> [b:f308d7619b]Join [/b:f308d7619b]ou equivalente.

<opicional>


Responder

Gostei + 0

12/02/2005

Vinicius2k

Colega,

Se seu banco de dados (que vc não nos informou qual) suportar, utilize LEFT JOIN, como segue :
select 
  C.*, 
  E.Endereco, 
  E.Bairro, 
  E.Cep, 
  E.UF, 
  E.Cidade,
  F.FoneResidencial, 
  F.FoneCelular,
  O.Observacao
from 
  TblCliente C
left join 
  TblEndereco E on (C.CodCliente = E.CodCliente)
left join 
  TblFone F on (C.CodCliente = F.CodCliente)
left join 
  TblObservacao on (C.CodCliente = O.CodCliente)
where 
  C.CodCliente = :PesqCod


Dúvidas sobre JOINS ? Leia este tópico : http://forum.clubedelphi.net/viewtopic.php?t=49308

Espero ter ajudado...
T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar