Bóson Treinamentos em Ciência e Tecnologia

JOINS e INNER JOIN – Selecionar dados de duas ou mais tabelas – SQL Server – 22

JOINS e INNER JOIN – Selecionar dados de duas ou mais tabelas no SQL Server

Empregamos as cláusulas JOIN (junções) para combinar dados armazenados em duas ou mais tabelas em um banco de dados, baseados em um relacionamento entre colunas destas tabelas.

Existem duas categorias principais de joins:

Nesta aula vamos estudar a cláusula INNER JOIN.

Cláusula INNER JOIN

Como vimos, a cláusula INNER JOIN (ou ainda simplesmente JOIN) nos permite obter registros com dados provenientes de duas ou mais tabelas que sejam relacionadas no banco de dados.
A sintaxe básica de um INNER JOIN em uma consulta é:

SELECT colunas
FROM tabela1
INNER JOIN tabela2
ON tabela1.coluna = tabela2.coluna;

Onde tabela1.coluna é o nome da primeira tabela concatenado com um ponto com o nome da coluna chave primária ou estrangeira da tabela, e tabela2.coluna é o nome da segunda tabela concatenado com um ponto e com a chave estrangeira ou primária dessa tabela que se relaciona com a chave da primeira tabela.

Exemplos

Vamos a um exemplo. Consultaremos as tabelas de livros e de autores (tbl_livros e tbl_autores) e vamos retornar os registros relativos aos livros e aos autores simultaneamente:

SELECT * FROM tbl_livros
INNER JOIN tbl_autores
ON tbl_livros.ID_Autor = tbl_autores.ID_Autor; 

Vamos a outro exemplo. Consultaremos as tabelas de livros e autores, porém retornando apenas os nomes dos livros, seus ISBNs e os nomes dos respectivos autores desses livros. Note que as duas primeiras informações estão na tabela de livros, e o nome do autor está armazenado somente na tabela de autores. O que as conecta é o relacionamento existente entre as colunas ID_Autor existentes em ambas as tabelas – chave primária na tabela de autores e chave estrangeira na tabela de livros:

SELECT tbl_livros.Nome_Livro, tbl_livros.ISBN, tbl_autores.Nome_Autor
FROM tbl_livros
INNER JOIN tbl_autores
ON tbl_livros.ID_Autor = tbl_autores.ID_Autor;

Mais um exemplo, agora usando filtros com a cláusula WHERE. Vamos retornar os nomes dos livros e nomes das editoras, mas somente das editoras cujo nome se inicie com a letra M. Perceba o emprego de aliases (apelidos) nestas declarações, para simplificar o código:

SELECT L.Nome_Livro AS Livros, E.Nome_editora AS Editoras
FROM tbl_livros AS L
INNER JOIN tbl_editoras AS E
ON L.ID_editora = E.ID_editora
WHERE E.Nome_Editora LIKE 'M%';

Vejamos um quarto exemplo para finalizar. Agora faremos um INNER JOIN usando as três tabelas do banco de dados relacionadas. Desejamos os nomes e preços dos livros, nomes de seus autores e editoras, porém somente das editoras cujo nome se inicie com a letra O, sendo tudo isso ordenado em ordem crescente de preço dos livros (do mais barato para o mais caro):

SELECT L.Nome_Livro AS Livro,
A.Nome_autor AS Autor,
E.Nome_Editora AS Editora,
L.Preco_Livro AS 'Preço do Livro'
FROM tbl_livros L
INNER JOIN tbl_autores AS A
ON L.ID_autor = A.ID_autor
INNER JOIN tbl_editoras AS E
ON L.ID_editora = E.ID_editora
WHERE E.Nome_Editora LIKE 'O%'
ORDER BY L.Preco_Livro ASC;

Neste exemplo fazemos o join entre a tabela de livros e a de autores, e logo na sequência o join entre a tabela de livros e a de editoras, pois os relacionamentos ocorrem entre essas tabelas. No final também ordenamos os resultados por ordem crescente dos preços dos livros.

Na próxima lição abordaremos os OUTER JOINS.

Enquanto isso, caso prefira, assista à aula sobre Inner Join no SQL Server neste vídeo do canal da Bóson Treinamentos no YouTube:

Sair da versão mobile