Ola pessoal, boa tarde, eu repciso de ajuda eu gostaria unir 3 campos de 3 tabelas diferentes que contem a mesdma chave estrangeira porém minha sql não está saindo do jeito quer gostaria, aghluém pode me ajudar, eu preciso do CodCliente, Nome telefone e email que estão nas respctivas tabelas abaixo e eaqui está minha sql:
SELECT telefone.* FROM telefone
INNER JOIN pessoafisica ON pessoafisica.CodCliente = telefone.CodCliente INNER JOIN cliente ON pessoafisica.CodCliente = cliente.CodCliente
ORDER BY pessoafisica.nome ASC
SELECT c.CodCliente, pf.Nome, t.Numero, c.Email
FROM Cliente AS c
INNER JOIN PessoaFisica AS pf on pf.CodCliente = c.CodCliente
INNER JOIN Telefone AS t on t.CodCliente = c.CodCliente
WHERE c.CodCliente = ?
ORDER BY pf.Nome
A linha do WHERE é opcional, o símbolo do ? seria um código passado para trazer de um único cliente, se você remover essa linha, todos os clientes que possuem telefone e são pessoas físicas aparecerão…
Apenas uma OBS, as tabelas Cliente e PessoaFisica não poderiam ser tornar uma só?
Geralmente costumamos apenas “flegar” (marcar uma coluna) para idenfifcar se o cliente é PJ ou PF, exemplo um tinyint(1) já trabalha como booleano (O BOOLEAN do mysql vira isso no fim das contas), sendo zero para PF ou 1 para PJ ou vice-versa o que acha?
Melhor que juntar as duas tabelas para trazer informações como nome (todo cliente tem um nome, mesmo sendo PJ, logo, teria de criar uma coluna nome na tabela PessoaJuridica também?)
Percebeu o problema da redundância de dados/informações replicadas/repetidas em várias tabelas?
Cada projeto tem sua regra de negócio, as sugiro estudar esse caso específico, talvez consiga melhorar, espero ter ajudado
muito obrigado amigo na verdade quem fez essa configuração de bd não fui eu, foi o outro colega do grupo ele gosta de complicar as coisas ahshahsahsha e eu precisava fazer um jasper report em cima dessa sql
e sim ele criou umnome em PJ tb so que el chamou de nome fantasia ahshashahsah e eu não sei pq motivos ele colocou CodCliente como PK e FK ao mesmo tempo
Cross Join raramente é usado e serve para cruzar (cross) todos os registros da tabela 1 com a tabela 2 sem critérios ou filtros (uso do on…) como o inner faz…