Baixe o app para aproveitar ainda mais
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
Compartilhar