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:

  • INNER JOIN: Mostra linhas (registros) quando houver pelo menos uma correspondência em ambas as tabelas.
  • OUTER JOIN: Mostra linhas (registros) mesmo quando não houver ao menos uma correspondência em uma das tabelas (ou ambas). A cláusula OUTER JOIN posusi os subtipos  RIGHT JOIN, LEFT JOIN e FULL JOIN.

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; 

INNER JOIN no SQL Server

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;

cláusula inner join no microsoft sql server

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%';

cláusula inner join com like no sql server

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;

como usar a cláusula inner join no sql server

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:

Sobre Fábio dos Reis (1207 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

1 Comentário em JOINS e INNER JOIN – Selecionar dados de duas ou mais tabelas – SQL Server – 22

  1. cesar augusto // 05/02/2014 em 12:00 // Responder

    otima aula

Escreva um comentário

Seu e-mail não será divulgado


*