Pessoal estou tentando retornar o nome dos clientes físicos que também são jurídicos. Eu tenho uma tabela cliente e suas filhas, clienteFisico, clienteJuridico. Estou tentando fazer com OUTER JOIN mas não está dando certo, não sei se OUTER é a maneira de correta de se fazer. Alguém tem uma dica, solução, ajuda. Agradeço a qualquer resposta.
Consulta SQL em herança
6 Respostas
Pra unir as duas visões entre física/jurídica das tabelas acredito que você precisaria de um UNION.
Como é o relacionamento entre essas tabelas? Acho que um simples inner join resolve, mas é bom ver esses relacionamentos para ter certeza.
CREATE TABLE cliente (
idCliente INTEGER NOT NULL,
loginCliente VARCHAR (30) NOT NULL,
emailCliente VARCHAR (30) NOT NULL,
nomeCliente VARCHAR (150) NOT NULL,
senhaCliente VARCHAR (50) NOT NULL,
cepCliente VARCHAR (9) NOT NULL,
bairroCliente VARCHAR (150) NOT NULL,
cidadeCliente VARCHAR (150) NOT NULL,
estadoCliente VARCHAR (50) NOT NULL,
enderecoCliente VARCHAR (150) NOT NULL,
CONSTRAINT pk_cliente PRIMARY KEY (idCliente)
);
CREATE TABLE clienteFisico (
cpfCliente VARCHAR (11) NOT NULL,
idCliente INTEGER NOT NULL,
CONSTRAINT fk_clientef FOREIGN KEY (idCliente) REFERENCES cliente (idCliente),
CONSTRAINT pk_clifisico PRIMARY KEY (cpfCliente, idCliente)
);
CREATE TABLE clienteJuridico (
cnpjCliente VARCHAR (20) NOT NULL,
idCliente INTEGER NOT NULL,
CONSTRAINT fk_clientej FOREIGN KEY (idCliente) REFERENCES cliente (idCliente),
CONSTRAINT pk_clientejuridico PRIMARY KEY (cnpjCliente, idCliente)
);
Estas são as tabelas, uma generalização/especialização, tentei fazer com um inner join mas não consegui, fiz com subconsulta mas não ficou certo o retorno rs, estou pesquisando agora sobre o union da resposta acima, ainda sou um aprendiz acho que dará para perceber na sql das tabelas rsrs. Agradeço a atenção.
SELECT
c.nomeCliente
FROM
cliente c
INNER JOIN clienteFisico cf ON cf.idCliente = c.idCliente
INNER JOIN clienteJuridico cj ON cj.idCliente = c.idCliente
Agradeço a instrução @Jonathan_Medeiros, muito obrigado pela atenção e ajuda.
Obrigado @Lucas_Camara resolveu meu problema, de fato parece ser um simples Join, mas não consegui pensar assim. Muito obrigado pela ajuda e atenção, aprendi mais um pouco
.