PostgreSQL( como juntar duas tabelas mesmo que não tenham os msm atributos )

CREATE TABLE Paises(
	pais_cod serial not null,
	nome VARCHAR(30) not null,
	primary key(pais_cod)
);
CREATE TABLE Pessoa(
	pes_cod serial not null,
	nome VARCHAR(30) not null,
	cpf VARCHAR(20) not null,
	sexo CHARACTER(1) not null,
	primary key(pes_cod)
);
CREATE TABLE Modalidades(
	mod_cod serial not null,
	nome VARCHAR(35) not null,
	descricao text,
	primary key(mod_cod)
);
CREATE TABLE Atletas(
	atle_cod serial not null,
	salario int not null, 
	pais_cod int not null, 
	pes_cod int not null,
	primary key(atle_cod),
	constraint fk_Paises foreign key (pais_cod) references Paises (pais_cod),
	constraint fk_Pessoa foreign key (pes_cod) references Pessoa (pes_cod)
);
CREATE TABLE Praticas(
	atle_cod int not null,
	mod_cod int not null,
	nivel int not null,
	primary key(nivel),
	constraint fk_Atletas foreign key (atle_cod) references Atletas (atle_cod),
	constraint fk_Modalidades foreign key (mod_cod) references Modalidades (mod_cod)
);
drop table Praticas;
drop table Atletas;
drop table Modalidades;
drop table Pessoa;
drop table Paises;

INSERT INTO Paises VALUES (default, 'Arzerbaijão');
INSERT INTO Paises VALUES (default, 'Rússia');
SELECT*FROM Paises;
INSERT INTO Pessoa VALUES (default, 'José aldo', '9999', 'M');
INSERT INTO Pessoa VALUES (default, 'Chuck Noris', '8888', 'M');
SELECT*FROM Pessoa;
INSERT INTO Modalidades VALUES (default, 'Salto c. vara', null);
INSERT INTO Modalidades VALUES (default, 'Judô', null);
SELECT*FROM Modalidades;
INSERT INTO Atletas VALUES(default, 3500, 1, 1);
INSERT INTO Atletas VALUES(default, 5000, 2, 2);
SELECT*FROM Atletas;
INSERT INTO Praticas VALUES(1,1,1);
INSERT INTO Praticas VALUES(2,2,3);
SELECT*FROM Praticas;

SELECT p.nome, a.salario
FROM Atletas a
INNER JOIN Pessoa p ON p.pes_cod = a.pes_cod;

SELECT p.nome, m.nome
FROM Atletas 
-- nessa parte preciso juntar o nome do atleta e sua respectiva modalidade

Pelo que entendi do modelo, vc tem que fazer JOIN com as tabelas Pratica e Modalidade:

SELECT 
	p.nome, 
	m.nome
FROM 
	Atletas a
	INNER JOIN Praticas p ON p.atle_cod = a.atle_cod
	INNER JOIN Modalidades m ON m.mod_cod = p.mod_cod

Então amigo, mas p.nome refere-se a tabela Pessoa, não a Praticas

Verdade, nem reparei. Na consulta que montei, tem que fazer o join com a tabela Pessoa tb.

SELECT 
	p.nome, 
	m.nome
FROM 
	Atletas a
	INNER JOIN Pessoa p ON p.pes_cod = a.pes_cod
	INNER JOIN Praticas pr ON pr.atle_cod = a.atle_cod
	INNER JOIN Modalidades m ON m.mod_cod = pr.mod_cod
1 curtida

Oh rapaz!! salvou meu dia viu, agradeço, tenha uma ótima semana!! :slight_smile: