Uma pequena introdução sobre o inner join em SQL
27 de dezembro de 2011 Deixe um comentário
Olá galera,
Recentemente fiquei pensando em um artigo que fosse útil e, acompanhando as aulas da faculdade, percebi as dificuldades do pessoal em assimilar o conceito sobre do Inner Join em banco de dados.
O Inner Join tem como objetivo aglutinar duas ou mais tabelas mediante atributos comuns que estão presentes nas mesmas, onde para realizarmos esta junção, utilizamos as chaves primárias / estrangeiras.
Dentre as vantagens de se utilizar o Inner Join, podemos considerar:
- Sua sintaxe ser mais organizada e facíl de compreender;
- Facilidade para se achar o melhor plano de ação para realizar consultas.
Sintaxe:
select <campos> from <tabela 1> inner join <tabela 2> on <campo tabela 1> = <campo tabela 2>
Para facilitar o entendimento, vamos utilizar um modelo do Northwind para exemplificar alguns casos:

No modelo acima, vamos supor em fazer uma junção da tabela Category com a Product, para retornar no resultado alguns campos como CategoryID, CategoryName, Description, ProductID, ProductName e UnitPrice, onde para realizar a junção da tabela vamos utilizar a chave primária CategoryID da tabela Category com a chave estrangeira CategoryID da tabela Product.
Podemos montar o join de duas maneiras e ambas retornarão o mesmo resultado, mas acredito que o primeiro as vezes seja até o melhor a ser utilizado para auxiliar no entendimento de views grandes e complexas.
Bem vamos lá:
select Category.CategoryID,Category.CategoryName,Category.Description, Product.ProductID,Product.ProductName,Product.UnitPrice from Category inner join Product on (Category.CategoryID = Product.CategoryID)
Ou
select c.CategoryID, c.CategoryName, c.Description, p.ProductID, p.ProductName, p.UnitPrice from Category c inner join Product p on (c.CategoryID = p.CategoryID)
A diferença das duas queries que montei acima é que na primeira utilizamos o nome da tabela seguido do ponto mais o campo desejado e no segundo exemplo eu utilizei um álias que coloquei logo após as tabelas.
Complementando estas queries, podemos acrescentar a cláusula where no final para realizar uma filtragem dos registros que vão ser retornados da base de dados, onde no exemplo abaixo apenas vou retornar os registos que o preço unitário for maior do que 200.
select Category.CategoryID,Category.CategoryName,Category.Description, Product.ProductID,Product.ProductName,Product.UnitPrice from Category inner join Product on (Category.CategoryID = Product.CategoryID) where Product.UnitPrice > 200
Bem galera, espero que o artigo seja realmente útil ![]()
Se alguém tiver algo a complementar, deixe seu comentário!
Um grande abraço a todos!