JOIN COM MAIS DE 3 TABELAS EM BANCO ACCESS
Olá amigos, eu estava com um problema para usar o JOIN com mais de DUAS tabelas, dei uma caçada no bom e velho google e achei pra fazer com 3 tabelas, o código está abaixo:
Select PE*, EN.*, TE.*
From [txt-color=#e80000]([/txt-color]Pessoa PE
Left Join Endereco EN On EN.pessoa_end = PE.id_pes[txt-color=#e80000]) [/txt-color]
Left Join Telefone TE On TE.pessoa_tel = PE.id_pes
Tendo este código, alguém saberia me dizer como eu faria pra relacionar mais tabelas, como por exemplo Email e Documentos?
Não entendi muito bem a lógica usada pra fazer esta query, se alguém pude ajudar, ficarei grato!
Obrigado
Select PE*, EN.*, TE.*
From [txt-color=#e80000]([/txt-color]Pessoa PE
Left Join Endereco EN On EN.pessoa_end = PE.id_pes[txt-color=#e80000]) [/txt-color]
Left Join Telefone TE On TE.pessoa_tel = PE.id_pes
Tendo este código, alguém saberia me dizer como eu faria pra relacionar mais tabelas, como por exemplo Email e Documentos?
Não entendi muito bem a lógica usada pra fazer esta query, se alguém pude ajudar, ficarei grato!
Obrigado
Para [Ô]Left Join[Ô], você pode fazer implicitamente:
Select pe.*, en.*, te.*
from pessoa pe, endereco en, telefone te, tabelaX tx
where en.pessoa_end = pe.id_pes
and te.pessoa_tel = pe.id_pes
and tx.pessoa_cod = pe.id_pes
Tenho 3 tabelas, Clientes, Cli_Enderecos e Cli_Adicionais.
Tenho uma chave primária na tabela Clientes, que se chama Código e uma chave estrangeira na tabela Cli_Enderecos que também se chama Código e na tabela Cli_Adicionais tenho a Chave estrangeira que se chama Código.
Tabela Clientes.
|Codigo| Nome |
000001| JOSé DA SILVA |
000002| JOANA DARK |
Tabela Cli_enderecos
|Codigo| Endereco |
000001| RUA TAL |
000002| RUA UM |
Tabela Cli_Adicionais
|Codigo| Apelido |
000001| Zé |
000002| JÔ |
Percebemos que em cada tabela há uma referencia, que é o código, com ela podemos fazer o select que você postou.
Select clientes.codigo, clientes.nome, cli_enderecos.endereco, cli_adicionais.apelido
From clientes
Left join cli_enderecos on cli_enderecos.codigo = clientes.codigo
Left join cli_adicionais on cli_adicionais.codigo = clientes.codigo
Retorno
|Codigo | Nome | Endereco | Apelido
000001| JOSé DA SILVA | RUA TAL | Zé
000002| JOANA DARK | RUA UM | JÔ
Podemos subistituir o Left join por inner join, mas a uma diferença entre elas, o left join traz todos os registros da tabela, mesmo os registros que não possuem referencia, mas o inner join só traz os registros com referencia em todas as tabelas apontadas no select.
PoderÃamos fazer de outra forma, como abaixo:
Select clientes.codigo, clientes.nome, cli_enderecos.endereco, cli_adicionais.apelido
From clientes, cli_enderecos, cli_adicionais
where clientes.codigo = cli_enderecos.codigo and
clientes.codigo = cli_adicionais.codigo
Acho que o primeiro exemplo fica mais controlado, mais isto vai da aplicação.
Tenho uma chave primária na tabela Clientes, que se chama Código e uma chave estrangeira na tabela Cli_Enderecos que também se chama Código e na tabela Cli_Adicionais tenho a Chave estrangeira que se chama Código.
Tabela Clientes.
|Codigo| Nome |
000001| JOSé DA SILVA |
000002| JOANA DARK |
Tabela Cli_enderecos
|Codigo| Endereco |
000001| RUA TAL |
000002| RUA UM |
Tabela Cli_Adicionais
|Codigo| Apelido |
000001| Zé |
000002| JÔ |
Percebemos que em cada tabela há uma referencia, que é o código, com ela podemos fazer o select que você postou.
Select clientes.codigo, clientes.nome, cli_enderecos.endereco, cli_adicionais.apelido
From clientes
Left join cli_enderecos on cli_enderecos.codigo = clientes.codigo
Left join cli_adicionais on cli_adicionais.codigo = clientes.codigo
Retorno
|Codigo | Nome | Endereco | Apelido
000001| JOSé DA SILVA | RUA TAL | Zé
000002| JOANA DARK | RUA UM | JÔ
Podemos subistituir o Left join por inner join, mas a uma diferença entre elas, o left join traz todos os registros da tabela, mesmo os registros que não possuem referencia, mas o inner join só traz os registros com referencia em todas as tabelas apontadas no select.
PoderÃamos fazer de outra forma, como abaixo:
Select clientes.codigo, clientes.nome, cli_enderecos.endereco, cli_adicionais.apelido
From clientes, cli_enderecos, cli_adicionais
where clientes.codigo = cli_enderecos.codigo and
clientes.codigo = cli_adicionais.codigo
Acho que o primeiro exemplo fica mais controlado, mais isto vai da aplicação.
Tópico encerrado , respostas não são mais permitidas