Consulta com Relacionamento
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
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
Curtidas 0
Respostas
Aroldo Zanela
10/02/2005
Colega,
Qual é o banco de dados? Use [b:f308d7619b]Left [/b:f308d7619b]<outer> [b:f308d7619b]Join [/b:f308d7619b]ou equivalente.
<opicional>
Qual é o banco de dados? Use [b:f308d7619b]Left [/b:f308d7619b]<outer> [b:f308d7619b]Join [/b:f308d7619b]ou equivalente.
<opicional>
GOSTEI 0
Vinicius2k
10/02/2005
Colega,
Se seu banco de dados (que vc não nos informou qual) suportar, utilize LEFT JOIN, como segue :
Dúvidas sobre JOINS ? Leia este tópico : http://forum.clubedelphi.net/viewtopic.php?t=49308
Espero ter ajudado...
T+
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+
GOSTEI 0