Inner join com 3 tabelas
alguem pode me ajudar ?
Tenho uma banco de dados onde preciso fazer um inner join com 3 tabelas
tenho a tabela pessoa que tem os atributose quero consultar esses dados(nome,sexo,idade,email,datanascimento,estadocivil,cpf
rg,telefonefixo , celular)
Tabela cliente que tem apenas o codigo do cliente
Tabela endereço que tem (endereco , cidade , bairro ,cep uf )
quero fazer um inner join nas três tabelas para aparecer os dados codigo do cliente ,nome ,idade ,nome,sexo,idade,email,datanascimento,estadocivil,cpf,rg,telefonefixo , celular ,endereco , cidade , bairro ,cep uf
Tenho uma banco de dados onde preciso fazer um inner join com 3 tabelas
tenho a tabela pessoa que tem os atributose quero consultar esses dados(nome,sexo,idade,email,datanascimento,estadocivil,cpf
rg,telefonefixo , celular)
Tabela cliente que tem apenas o codigo do cliente
Tabela endereço que tem (endereco , cidade , bairro ,cep uf )
quero fazer um inner join nas três tabelas para aparecer os dados codigo do cliente ,nome ,idade ,nome,sexo,idade,email,datanascimento,estadocivil,cpf,rg,telefonefixo , celular ,endereco , cidade , bairro ,cep uf
Luiz Lopes
Curtidas 0
Respostas
Deivison Melo
04/11/2011
Seria mais ou menos isso!!
select
c.codigoCliente,
p.nome,
p.sexo,
p.idade,
p.email,
p.datanascimento,
p.estadocivil,
p.cpf,
p.rg.
p.telefonefixo,
p.celular,
e.endereco,
e.cidade,
e.bairro,
e.cidade,
e.cep,
e.uf
from pessoa p, cliente c, endereco e
where c.codigoCliente = p.codigoCliente
and c.codigoCliente = e.codigoCliente
Onde no lugar do campo: codigoCliente, você vai usar os campos que faz ligação entre as tabelas, ou o campo faz a ligação entre as três tabelas ou em duas, vai depender da estrutura real de sua tabela...
Espero ter ajudado!
Boa sorte!
PS. Caso precisar colocar os ddl´s de suas tabelas que eu faço o join
não usei o inner join, mas pela lógica o resultado final é o mesmo!!
select
c.codigoCliente,
p.nome,
p.sexo,
p.idade,
p.email,
p.datanascimento,
p.estadocivil,
p.cpf,
p.rg.
p.telefonefixo,
p.celular,
e.endereco,
e.cidade,
e.bairro,
e.cidade,
e.cep,
e.uf
from pessoa p, cliente c, endereco e
where c.codigoCliente = p.codigoCliente
and c.codigoCliente = e.codigoCliente
Onde no lugar do campo: codigoCliente, você vai usar os campos que faz ligação entre as tabelas, ou o campo faz a ligação entre as três tabelas ou em duas, vai depender da estrutura real de sua tabela...
Espero ter ajudado!
Boa sorte!
PS. Caso precisar colocar os ddl´s de suas tabelas que eu faço o join
não usei o inner join, mas pela lógica o resultado final é o mesmo!!
GOSTEI 0
Luiz Lopes
04/11/2011
Olá deivison eu executei esse comando que vc me passou mais
esta dando este erro : Unknown column p.cli_codigo in where clause
esse e meu script ta tabelas que quero fazer o inner join
CREATE TABLE Pessoa (
pess_codigo INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
pess_nome VARCHAR(40) NULL,
pess_sexo VARCHAR(2) NULL,
pess_idade INT(3) NULL,
pess_email VARCHAR(30) NULL,
pess_datanas VARCHAR(20) NULL,
pess_estadocivil VARCHAR(20) NULL,
pess_cpf VARCHAR(14) NULL,
pess_rg VARCHAR(10) NULL,
pess_telefonefixo VARCHAR(20) NULL,
pess_celular VARCHAR(20) NULL,
PRIMARY KEY(pess_codigo)
);
CREATE TABLE Clientes (
cli_codigo INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
Pessoa_pess_codigo INTEGER UNSIGNED NOT NULL,
PRIMARY KEY(cli_codigo),
INDEX Clientes_FKIndex1(Pessoa_pess_codigo)
);
CREATE TABLE endereco (
end_codigo INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
Fornecedor_forn_codigo INTEGER UNSIGNED NOT NULL,
Pessoa_pess_codigo INTEGER UNSIGNED NOT NULL,
end_endereco VARCHAR(30) NULL,
end_cidade VARCHAR(30) NULL,
end_bairro VARCHAR(30) NULL,
end_cep VARCHAR(30) NULL,
end_uf VARCHAR(2) NULL,
PRIMARY KEY(end_codigo),
INDEX endereco_FKIndex1(Pessoa_pess_codigo),
INDEX endereco_FKIndex2(Fornecedor_forn_codigo)
);
att
Luiz augusto
esta dando este erro : Unknown column p.cli_codigo in where clause
esse e meu script ta tabelas que quero fazer o inner join
CREATE TABLE Pessoa (
pess_codigo INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
pess_nome VARCHAR(40) NULL,
pess_sexo VARCHAR(2) NULL,
pess_idade INT(3) NULL,
pess_email VARCHAR(30) NULL,
pess_datanas VARCHAR(20) NULL,
pess_estadocivil VARCHAR(20) NULL,
pess_cpf VARCHAR(14) NULL,
pess_rg VARCHAR(10) NULL,
pess_telefonefixo VARCHAR(20) NULL,
pess_celular VARCHAR(20) NULL,
PRIMARY KEY(pess_codigo)
);
CREATE TABLE Clientes (
cli_codigo INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
Pessoa_pess_codigo INTEGER UNSIGNED NOT NULL,
PRIMARY KEY(cli_codigo),
INDEX Clientes_FKIndex1(Pessoa_pess_codigo)
);
CREATE TABLE endereco (
end_codigo INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
Fornecedor_forn_codigo INTEGER UNSIGNED NOT NULL,
Pessoa_pess_codigo INTEGER UNSIGNED NOT NULL,
end_endereco VARCHAR(30) NULL,
end_cidade VARCHAR(30) NULL,
end_bairro VARCHAR(30) NULL,
end_cep VARCHAR(30) NULL,
end_uf VARCHAR(2) NULL,
PRIMARY KEY(end_codigo),
INDEX endereco_FKIndex1(Pessoa_pess_codigo),
INDEX endereco_FKIndex2(Fornecedor_forn_codigo)
);
att
Luiz augusto
GOSTEI 0
Deivison Melo
04/11/2011
select
c.codigoCliente,
p.nome,
p.sexo,
p.idade,
p.email,
p.datanascimento,
p.estadocivil,
p.cpf,
p.rg.
p.telefonefixo,
p.celular,
e.endereco,
e.cidade,
e.bairro,
e.cidade,
e.cep,
e.uf
from pessoa p, cliente c, endereco e
where c.codigoCliente = p.codigoCliente
and c.codigoCliente = e.codigoClienteselect
c.codigoCliente,
p.nome,
p.sexo,
p.idade,
p.email,
p.datanascimento,
p.estadocivil,
p.cpf,
p.rg.
p.telefonefixo,
p.celular,
e.endereco,
e.cidade,
e.bairro,
e.cidade,
e.cep,
e.uf
from pessoa p, cliente c, endereco e
where c.cli_codigo = p.pess_codigo
and p.pess_codigo = e.end_codigo
c.codigoCliente,
p.nome,
p.sexo,
p.idade,
p.email,
p.datanascimento,
p.estadocivil,
p.cpf,
p.rg.
p.telefonefixo,
p.celular,
e.endereco,
e.cidade,
e.bairro,
e.cidade,
e.cep,
e.uf
from pessoa p, cliente c, endereco e
where c.codigoCliente = p.codigoCliente
and c.codigoCliente = e.codigoClienteselect
c.codigoCliente,
p.nome,
p.sexo,
p.idade,
p.email,
p.datanascimento,
p.estadocivil,
p.cpf,
p.rg.
p.telefonefixo,
p.celular,
e.endereco,
e.cidade,
e.bairro,
e.cidade,
e.cep,
e.uf
from pessoa p, cliente c, endereco e
where c.cli_codigo = p.pess_codigo
and p.pess_codigo = e.end_codigo
GOSTEI 0
Luiz Lopes
04/11/2011
Deivison vou te incomodar mais uma vez ,cara essa ultima consulta que vc me mandou
ela funciona ,mas tipo quando eu execulto esse comando no MYSQL
ele me fornece os campos que eu estou pesquisando mais não retorna nenhum dado.
não esta listando os valores dos campos.
att
ela funciona ,mas tipo quando eu execulto esse comando no MYSQL
ele me fornece os campos que eu estou pesquisando mais não retorna nenhum dado.
não esta listando os valores dos campos.
att
GOSTEI 0
Vagner Almeida
04/11/2011
Tenta assim:
select a.coluna1, a.coluna2, a.colunaN, x.coluna1, x.coluna2, x.colunaN, y.coluna1, y.coluna2, y.colunaN
from tabela a
inner join tabela x on a.codigo = x.codigo
inner join tabela y on a.codigo = y.codigo
.
.
.
inner join tabela n on a.codigo = n.codigo
espero ter ajundado
select a.coluna1, a.coluna2, a.colunaN, x.coluna1, x.coluna2, x.colunaN, y.coluna1, y.coluna2, y.colunaN
from tabela a
inner join tabela x on a.codigo = x.codigo
inner join tabela y on a.codigo = y.codigo
.
.
.
inner join tabela n on a.codigo = n.codigo
espero ter ajundado
GOSTEI 0
Claudio Apolonio
04/11/2011
Uma tabela de relacionamento seria o mais ideal a se utilizar nesse modelo cliente <-> endereço. Mais de qualquer forma desse jeito deve funcionar. Qualquer dúvida estamos aí.
select c.cli_codigo, p.pess_nome, p.pess_sexo, p.pess_idade, p.pess_email, p.pess_datanas, p.pess_estadocivil, p.pess_cpf, p.pess_rg, p.pess_telefonefixo, p.pess_celular, e.end_codigo, e.end_cidade, e.end_bairro, e.end_cep, e.end_uf from pessoa p, clientes c, endereco e where c.Pessoa_pess_codigo = p.pess_codigo and c.Pessoa_pess_codigo = e.Pessoa_pess_codigo
GOSTEI 0
Claudio Apolonio
04/11/2011
Desculpe, mais a tag de código não esta legal. Segue o Sql:
select
c.cli_codigo,
p.pess_nome,
p.pess_sexo,
p.pess_idade,
p.pess_email,
p.pess_datanas,
p.pess_estadocivil,
p.pess_cpf,
p.pess_rg,
p.pess_telefonefixo,
p.pess_celular,
e.end_codigo,
e.end_cidade,
e.end_bairro,
e.end_cep,
e.end_uf
from pessoa p, clientes c, endereco e
where c.Pessoa_pess_codigo = p.pess_codigo
and c.Pessoa_pess_codigo = e.Pessoa_pess_codigo
select
c.cli_codigo,
p.pess_nome,
p.pess_sexo,
p.pess_idade,
p.pess_email,
p.pess_datanas,
p.pess_estadocivil,
p.pess_cpf,
p.pess_rg,
p.pess_telefonefixo,
p.pess_celular,
e.end_codigo,
e.end_cidade,
e.end_bairro,
e.end_cep,
e.end_uf
from pessoa p, clientes c, endereco e
where c.Pessoa_pess_codigo = p.pess_codigo
and c.Pessoa_pess_codigo = e.Pessoa_pess_codigo
GOSTEI 0