Buscar

SCRIPT_JOINS_EXEMPLOS_BASICOS

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

--------------------------------------------------------------
-- SCRIPT_JOINS_EXEMPLOS_BASICOS.SQL
-- CRIADO POR: Paulo Giovani
-- Demonstração sobre JOINS - exemplos básicos
--------------------------------------------------------------
USE master
GO
-- Habilita o banco LOJA_MARIA
Use LOJA_MARIA
GO
-- *****************************************************
-- Cria duas tabelas de testes: CLIENTES_2 e PRODUTOS_2 
-- *****************************************************
-- Tabela CLIENTES_2
CREATE TABLE Clientes_2 (
	id_cliente 	INT IDENTITY PRIMARY KEY,
	nome 		CHAR(20)
)
GO
-- Insere alguns clientes
INSERT INTO Clientes_2 VALUES ('Ana')
INSERT INTO Clientes_2 VALUES ('Zé')
INSERT INTO Clientes_2 VALUES ('Pedro')
INSERT INTO Clientes_2 VALUES ('Maria')
INSERT INTO Clientes_2 VALUES ('Tião')
GO
-- Tabela PRODUTOS_2
CREATE TABLE Produtos_2 (
	id_produto 	INT IDENTITY PRIMARY KEY,
	id_cliente 	INT,
	descricao 	VARCHAR(30)
	
)
GO 
-- Insere alguns produtos
INSERT INTO Produtos_2 VALUES (1, 'Televisão')
INSERT INTO Produtos_2 VALUES (1, 'DVD Player')
INSERT INTO Produtos_2 VALUES (2, 'Geladeira')
INSERT INTO Produtos_2 VALUES (2, 'Cama')
INSERT INTO Produtos_2 VALUES (2, 'Mesa')
INSERT INTO Produtos_2 VALUES (2, 'Jogo de Panelas')
INSERT INTO Produtos_2 VALUES (1, 'Cafeteira')
INSERT INTO Produtos_2 VALUES (2, 'Microondas')
INSERT INTO Produtos_2 VALUES (2, 'Tanquinho')
INSERT INTO Produtos_2 VALUES (5, 'Guarda-Roupa')
INSERT INTO Produtos_2 VALUES (null, 'Jogo de Copos')
INSERT INTO Produtos_2 VALUES (null, 'Estante')
INSERT INTO Produtos_2 VALUES (null, 'Sofá')
INSERT INTO Produtos_2 VALUES (null, 'Rede de Dormir')
GO
-- ***********************************
-- Demonstração dos JOINS
-- ***********************************
select * from clientes_2
go
insert 
select * from produtos_2
go
--------------------------------------
-- INNER JOIN
--------------------------------------
-- Seleciona os clientes e os produtos que eles compraram - Versão com WHERE
SELECT	Clientes_2.nome, 
		Produtos_2.descricao
FROM Clientes_2, Produtos_2
WHERE Clientes_2.id_cliente = Produtos_2.id_cliente
ORDER BY Clientes_2.nome
GO
-- Seleciona os clientes e os produtos que eles compraram - Versão com INNER JOIN
SELECT	Clientes_2.nome, 
		Produtos_2.descricao
FROM Clientes_2 INNER JOIN Produtos_2
		ON Clientes_2.id_cliente = Produtos_2.id_cliente
ORDER BY Clientes_2.nome
GO
-- Seleciona os clientes e os produtos que eles compraram - Versão com ALIASES
SELECT	C.nome, 
		P.descricao
FROM Clientes_2 C INNER JOIN Produtos_2 P
	ON C.id_cliente = P.id_cliente
ORDER BY C.nome
GO
--------------------------------------
-- LEFT OUTER JOIN
--------------------------------------
-- Seleciona os clientes que não compraram nenhum produto
SELECT	C.nome, 
		P.descricao
FROM Clientes_2 C LEFT OUTER JOIN Produtos_2 P
	ON C.id_cliente = P.id_cliente
ORDER BY C.nome
GO
-- Seleciona os produtos que não foram comprados por nenhum cliente
SELECT	C.nome, 
		P.descricao
FROM Produtos_2 P LEFT OUTER JOIN Clientes_2 C
	ON C.id_cliente = P.id_cliente
ORDER BY C.nome
GO
--------------------------------------
-- RIGHT OUTER JOIN
--------------------------------------
-- Seleciona os produtos que não foram comprados por nenhum cliente
SELECT	C.nome, 
		P.descricao
FROM Clientes_2 C RIGHT OUTER JOIN Produtos_2 P
	ON C.id_cliente = P.id_cliente
ORDER BY C.nome
GO
-- Seleciona os clientes que não compraram nenhum produto
SELECT	C.nome, 
		P.descricao
FROM Produtos_2 P RIGHT OUTER JOIN Clientes_2 C
	ON C.id_cliente = P.id_cliente
ORDER BY C.nome
GO
--------------------------------------
-- FULL OUTER JOIN
--------------------------------------
-- Seleciona todos os dados da tabela
-- Retorna quem comprou cada produto
-- Retona quem não comprou nada
-- Retorna quem não foi comprado por ninguém
SELECT	C.nome, 
		P.descricao
FROM Clientes_2 C FULL OUTER JOIN Produtos_2 P
	ON C.id_cliente = P.id_cliente
ORDER BY C.nome
GO
--------------------------------------
-- CROSS JOIN
--------------------------------------
-- Retorna um produto cartesiano de todos os elementos da tabela
-- Retorna o cliente x produto
SELECT	C.nome, 
		P.descricao
FROM Clientes_2 C CROSS JOIN Produtos_2 P
ORDER BY C.nome
GO
-- Retorna um produto cartesiano de todos os elementos da tabela
-- Retorna o produto x cliente
SELECT	P.descricao, 
		C.nome
FROM Clientes_2 C CROSS JOIN Produtos_2 P
ORDER BY C.nome
GO
-- CUIDADO!!!
-- Exemplo de consulta errada
-- Sem a cláusula WHERE, realiza um produto cartesiano
SELECT 	C.nome, 
		P.descricao
FROM Clientes_2 C, Produtos_2 P
ORDER BY C.nome
GO

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando