Página 1 de 1

Comandos JOIN

Enviado: 06 Mai 2025, 20:04
por bernardino
Foram criados as tabelas

Código: Selecionar todos

CREATE TABLE material (
	id_material INTEGER PRIMARY KEY,
	nome VARCHAR(30)
);

Código: Selecionar todos

CREATE TABLE pessoa (
	id_pessoa INTEGER PRIMARY KEY,
	nome VARCHAR(30),
	id_materialfk INTEGER,
	CONSTRAINT material_if_fk FOREIGN KEY(id_materialfk)
	REFERENCES material(id_material)
);
Inserido os dados

Código: Selecionar todos

INSERT INTO material (id_material, nome) VALUES
(1,'bola'),(2,'capacete'),(3,'bone'),(4,'luva'),(5,'chuteira'),(6,'globo'),(7,'taco');
INSERT INTO pessoa (id_pessoa, nome, id_materialfk) VALUES
(1,'Pedro',1),(2,'Rafael',6),(3,'Marcos',7);
--ELABORA UM COMANDO DE SELECT COMO O DA AULA PASSADA

Código: Selecionar todos

SELECT material.nome, pessoa.nome
FROM material, pessoa
WHERE material.id_material = pessoa.id_materialfk
--MOSTRE O NOME PESSOAS E NOMES DOS MATERIAIS QUE ELES POSSUEM

Código: Selecionar todos

SELECT material.nome, pessoa.nome
	FROM material INNER JOIN pessoa
	ON material.id_material = pessoa.id_materialfk;
--Selecione o nome das pessoas que possuem ou não material,
--caso tenham material apresente os nomes dos materiais.

Código: Selecionar todos

INSERT INTO pessoa(id_pessoa, nome, id_materialfk) VALUES(4,'Daniel',null);

Código: Selecionar todos

SELECT p.nome, m.nome
FROM pessoa as p LEFT JOIN material as m
ON id_material = id_materialfk;

Código: Selecionar todos

SELECT p.nome, m.nome
FROM pessoa as p LEFT JOIN material as m
ON id_material = id_materialfk;
-- SELECIONE TODAS AS PESSOAS QUE NÃO POSSUEM MATERIAL

Código: Selecionar todos

SELECT A.nome, B.nome
FROM pessoa AS A
LEFT JOIN material AS B
  ON A.id_materialfk = B.id_material
WHERE B.id_material IS NULL;
-- Selecione todos os materiais e por quem estão sendo utilizados ou não?

Código: Selecionar todos

SELECT A.nome, B.nome
FROM pessoa AS A 
RIGHT JOIN material AS B
ON A.id_materialfk = B.id_material;
-- QUERO VISUALIZAR TODOS OS MATERIAIS SEM PESSOA ASSOCIADO

Código: Selecionar todos

SELECT A.nome, B.nome
FROM pessoa AS A RIGHT JOIN material AS B
ON A.id_materialfk = B.id_material
WHERE A.id_materialfk is null;
--independente de estarem ou não associados

Código: Selecionar todos

SELECT A.nome, B.nome
FROM pessoa AS A FULL OUTER JOIN material AS B
ON A.id_materialfk = B.id_material
--Mostre os atltas sem material e os materiais que estão sem atletas ainda

Código: Selecionar todos

SELECT A.nome, B.nome
FROM pessoa AS A FULL OUTER JOIN material AS B
ON A.id_materialfk = B.id_material
WHERE A.id_materialfk is null OR B.id_material IS NULL