Inner join em 3 tabelas, preciso de ajuda
Boa Tarde pessoa eu preciso fazer um inner join entre essas 3 tabelas, eu tentei escrever um mas sem sucesso, o que eu preciso, eu preciso do Nome da tab pessoa fisica, do telefone da tabela telefone e do email da tabela cliente todas elas tem em comum o CodCliente, alguém pode me ajudar?
Eis a sql que tentei fazer 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
CREATE TABLE Cliente(
CodCliente INT(11) AUTO_INCREMENT,
DataInscricao DATE,
CodEndereco INT(11),
Email VARCHAR(50),
XDEAD BOOLEAN DEFAULT FALSE,
/*FK*/
FOREIGN KEY(CodEndereco) REFERENCES Endereco(CodEndereco),
/*PK*/
PRIMARY KEY(CodCliente)
);
CREATE TABLE Telefone(
CodCliente INT(11),
Numero VARCHAR(15),
XDEAD BOOLEAN DEFAULT FALSE,
/*FK*/
FOREIGN KEY(CodCliente) REFERENCES Cliente(CodCliente),
/*PK*/
PRIMARY KEY(CodCliente, Numero)
);
CREATE TABLE PessoaFisica(
CodCliente INT(11),
Cpf VARCHAR(20),
Nome VARCHAR(50),
DataNascimento DATE,
XDEAD BOOLEAN DEFAULT FALSE,
/*FK*/
FOREIGN KEY(CodCliente) REFERENCES Cliente(CodCliente),
/*PK*/
PRIMARY KEY(CodCliente)
);
Eis a sql que tentei fazer 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
CREATE TABLE Cliente(
CodCliente INT(11) AUTO_INCREMENT,
DataInscricao DATE,
CodEndereco INT(11),
Email VARCHAR(50),
XDEAD BOOLEAN DEFAULT FALSE,
/*FK*/
FOREIGN KEY(CodEndereco) REFERENCES Endereco(CodEndereco),
/*PK*/
PRIMARY KEY(CodCliente)
);
CREATE TABLE Telefone(
CodCliente INT(11),
Numero VARCHAR(15),
XDEAD BOOLEAN DEFAULT FALSE,
/*FK*/
FOREIGN KEY(CodCliente) REFERENCES Cliente(CodCliente),
/*PK*/
PRIMARY KEY(CodCliente, Numero)
);
CREATE TABLE PessoaFisica(
CodCliente INT(11),
Cpf VARCHAR(20),
Nome VARCHAR(50),
DataNascimento DATE,
XDEAD BOOLEAN DEFAULT FALSE,
/*FK*/
FOREIGN KEY(CodCliente) REFERENCES Cliente(CodCliente),
/*PK*/
PRIMARY KEY(CodCliente)
);
Felipe Martins
Curtidas 0
Melhor post
Tiago
12/12/2017
tenta isso...(obs: Não testei, pode ser que precise de algumas modificações)
CREATE TABLE Cliente(
CodCliente INT(11) primary key AUTO_INCREMENT,
DataInscricao DATE,
CodEndereco INT(11),
Email VARCHAR(50),
XDEAD BOOLEAN DEFAULT FALSE
);
CREATE TABLE Telefone(
codigo_telefone int(11) primary key
CodCliente INT(11),
Numero VARCHAR(15),
XDEAD BOOLEAN DEFAULT FALSE
);
CREATE TABLE PessoaFisica(
codigo_telefone int (11) primary key auto increment
CodCliente INT(11),
Cpf VARCHAR(20),
Nome VARCHAR(50),
DataNascimento DATE,
XDEAD BOOLEAN DEFAULT FALSE
);
alter table telefone add constraint (fk_cliente) foreign key(CodCliente) references Cleinte(CodCliente)
alter table PessoaFisica add constraint (fk_cliente) foreign key(CodCliente) references Cleinte(CodCliente)
select c.*, t.*, pf.*
from Cliente c
left join Telefone T on (t.CodCliente = c.CodCliente )
left join PessoaFisica PF on (pf.CodCliente = c.CodCliente )
CREATE TABLE Cliente(
CodCliente INT(11) primary key AUTO_INCREMENT,
DataInscricao DATE,
CodEndereco INT(11),
Email VARCHAR(50),
XDEAD BOOLEAN DEFAULT FALSE
);
CREATE TABLE Telefone(
codigo_telefone int(11) primary key
CodCliente INT(11),
Numero VARCHAR(15),
XDEAD BOOLEAN DEFAULT FALSE
);
CREATE TABLE PessoaFisica(
codigo_telefone int (11) primary key auto increment
CodCliente INT(11),
Cpf VARCHAR(20),
Nome VARCHAR(50),
DataNascimento DATE,
XDEAD BOOLEAN DEFAULT FALSE
);
alter table telefone add constraint (fk_cliente) foreign key(CodCliente) references Cleinte(CodCliente)
alter table PessoaFisica add constraint (fk_cliente) foreign key(CodCliente) references Cleinte(CodCliente)
select c.*, t.*, pf.*
from Cliente c
left join Telefone T on (t.CodCliente = c.CodCliente )
left join PessoaFisica PF on (pf.CodCliente = c.CodCliente )
GOSTEI 1
Mais Respostas
Felipe Martins
12/12/2017
Ola amigo agradeco a sua resposta, ela foi de grande ajuda :), eu acho que encontrei uma solução sem unir elemento das tabelas
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
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
GOSTEI 0