Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ramateussi

Iner Join com 4 tabelas

Recommended Posts

Olá pessoal, estou com um probleminha na minha consulta. Eu preciso fazer um select para trazer dados de 4 tabelas, que são as tabelas de clientes, cliente_fisico, cliente_juridico e cidades. Mas não sei se o meu código está certo, alguem poderia me ajudar?! O código é esse:

 

select cli.ID_CLIENTE,cli.NOME,cli.ID_CIDADE,ci.cidade,cf.cpf,cj.cnpj,cli.telefone from clientes cli

inner join cliente_fisico cf on cli.id_cliente=cf.id_clientefi

inner join cliente_juridico cj on cli.id_cliente=cj.id_clienteju

inner join cidades ci on cli.id_cidade=ci.id_cidade

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde, tente algo assim:

 

SELECT

CLI.ID_CLIENTE, CLI.NOME, CLI.TELEFONE, CLI.ID_CIDADE, CI.CIDADE, CF.CPF, CJ.CNPJ

FROM

CLIENTES CLI, CLIENTE_FISICO CF, CLIENTE_JURIDICO CJ, CIDADES CI

WHERE

CLI.ID_CLIENTE = CF.ID_CLIENTEFI AND

CLI.ID_CLIENTE = CJ.ID_CLIENTEJU AND

CLI.ID_CIDADE = CI.ID_CIDADE

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, pelo que vejo, nem todos os clientes, da tabela CLIENTES, estão nas tabelas CLIENTE_FISICO, CLIENTE_JURIDICO OU CIDADES.

Talvez você deva utilizar um LEFT JOIN, que selecionará os dados dessas tabelas apenas quando estes existirem, porém, quando não existirem, ou dados da tabela CLIENTES continuarão sendo selecionados.

 

Tente assim.

 

select cli.ID_CLIENTE,cli.NOME,cli.ID_CIDADE,ci.cidade,cf.cpf,cj.cnpj,cli.telefone
from clientes cli
LEFT join cliente_fisico cf on cli.id_cliente=cf.id_clientefi
LEFT join cliente_juridico cj on cli.id_cliente=cj.id_clienteju
LEFT join cidades ci on cli.id_cidade=ci.id_cidade

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.