Inner join em 3 tabelas, preciso de ajuda

SQL

12/12/2017

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)
);
Felipe Martins

Felipe Martins

Curtidas 0

Melhor post

Tiago

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 )
GOSTEI 1

Mais Respostas

Felipe Martins

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
GOSTEI 0
POSTAR