Fórum Desafio: Problemas com relacionamento #154444

12/04/2003

0

Tenho um cadastro de clientes onde existe uma tabela para armazenar os dados do cliente, uma para armazenar os tipos de contado (residencial, comercial,...) e outra para armazenar os contatos (231-3445,...). Fazendo isso eu dou oportunidade ao cliente de armazenar quantos “tipos de contato” e “contato” ele achar necessário para cada cliente!

Minha tabela de contatos (Contatos) está assim:

CodCliente; CodTipo; Contato.

Minha tabela de Tipo (Tipo) de contato está assim:

Codigo; Tipo.

Tenho um relatório do cadastro de clientes, mas não estou conseguindo puxar os telefones de cada cliente e seus respectivos tipos.

O campo “contato” do relatório está ligado a um TQuery com o seguinte código em sua propriedade SQL:

SELECT Clientes.Codigo, Contatos.* FROM Clientes INNER JOIN Contatos ON Clientes.Codigo = Contatos.CodCliente
where Clientes.Codigo = Contatos.CodCliente

Quando executo o relatório todos os clientes aparecem com o mesmo número de telefone (pertencente ao primeiro cliente) e apenas um dos números cadastrados.

Gostaria que cada cliente aparecesse com seus números de telefone e respectivos tipos de contato. Como posso fazer isso?

Qualquer sugestão é bem vinda, devo ter de fazer um relacionamento envolvendo também a tabela “Tipo” e atualizar, mas não estou sabendo como fazer isso...


Flaviolrf

Flaviolrf

Responder

Posts

12/04/2003

Einstein

se o telefone estiver na tabela clientes então o código vai ficar assim:

SELECT Clientes.*, Contatos.* FROM Clientes INNER JOIN Contatos ON Clientes.Codigo = Contatos.CodCliente
where Clientes.Codigo = Contatos.CodCliente

espero ter ajudado
Einstein Xavier


Responder

Gostei + 0

12/04/2003

Everton

Tente:

SELECT CLI.*, TIP.Tipo, CON.Contato
FROM Clientes CLI
LEFT OUTER JOIN Contato
ON (CLI.Codigo = CON.CodCliente)
INNER JOIN
ON (CON.CodTipo = TIP.Codigo)

Serão listados todos os clientes, independentes de possuirem ou não contatos.


Responder

Gostei + 0

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

Aceitar