Escolar Documentos
Profissional Documentos
Cultura Documentos
INNER JOIN é uma cláusula que permite a junção entre duas ou mais tabelas, desde que hajam entrelaçamento entre todas.
Suporte ao alunoAnotarMarcar como concluído
ArtigosBanco de DadosSQL: INNER JOIN
INNER JOIN é uma cláusula que permite a junção entre duas ou mais tabelas, desde que hajam
entrelaçamento entre todas.
Guia do artigo:
Visão geral
Sintaxe
Na prática
Cursos de Banco de Dados
Curso de SQL
Aprenda SQL
Visão geral
Essa cláusula trará em sua consulta os dados que são comuns às duas tabelas, conforme ilustra a Figura 1.
Para os exemplos a seguir considere a estrutura de tabelas abaixo, onde temos uma tabela
chamada produto (Tabela 1), responsável por armazenar todos os produtos do estoque do cliente, a
tabela categoria_produto (Tabela 2), responsável por armazenar todas as categorias existentes no banco de dados,
e a tabela venda_produto (Tabela 3), que relaciona os produtos que foram vendidos.
1 Bola 35.00 1
2 Patinete 120.00 1
3 Carrinho 15.00 1
4 Skate 296.00 1
5 Notebook 3500.00 2
6 Monitor LG 19 450.00 2
O Diário de Anne
7 45.00 3
Frank
id nome
1 Infantil
2 Informatica
3 Educacional
1 1 35.00 2018-05-15
2 1 35.00 2018-06-15
3 1 35.00 2018-07-15
4 2 120.00 2018-07-15
5 2 120.00 2018-07-14
6 3 15.00 2018-07-15
7 7 45.00 2018-07-15
8 8 65.00 2018-07-15
9 8 65.00 2018-07-16
10 9 48.00 2018-07-16
11 5 3500.00 2018-07-16
12 5 3500.00 2018-07-16
13 6 450.00 2018-07-16
Sintaxe
SELECT
[ tabela1.coluna1, tabela1.coluna2, ... | N.coluna1, N.coluna2, … ]
FROM
[ tabela1 | tabela1 F ]
LEFT JOIN
[ tabelaX | tabelaX N]
ON
[ tabelaX.coluna1 = tabela1.coluna1 | N.coluna1 = F.coluna1 ]
Na prática
Exemplo 1
Para este exemplo, suponha que seja necessário trazer as informações de todos os produtos da tabela produto, e
também trazer o nome da sua respectiva categoria no resultado. Para isso, podemos utilizar o trecho de código
abaixo:
SELECT
P.nome,
P.preco,
C.nome as Categoria
FROM
produto P
INNER JOIN
categoria_produto C
ON P.id_categoria = C.id
No trecho de código acima, nas linhas 1 a 4 selecionamos a coluna nome e a coluna preco da tabela produto, e
em seguida, selecionamos a coluna categoria da tabela categoria.
Em seguida, nas linhas 5 e 6 definimos que a consulta será feita na tabela produto, nomeada de P, e em seguida,
nas linhas 7 e 8 realizamos um INNER JOIN na tabela categoria_produto, nomeada de C, e logo na linha
9 informamos que a condição para a junção das duas tabelas é o ID da categoria ser o mesmo nas duas tabelas.
Exemplo 2
Neste exemplo adicionaremos mais um JOIN a essa tabela. Poderíamos incluir nessa consulta acima, o total de
produtos que foram vendidos. Para isso, podemos utilizar a query abaixo:
SELECT
P.nome,
P.preco,
C.nome as Categoria,
COUNT(V.id_produto) TOTAL_VENDIDOS
FROM
produto P
INNER JOIN
categoria_produto C
ON P.id_categoria = C.id
INNER JOIN
venda_produto V
ON V.id_produto = P.id
GROUP BY P.id
No trecho de código acima, nas linhas 1 a 5 selecionamos a coluna nome e a coluna preco da tabela produto,
selecionamos a coluna categoria da tabela categoria e, em seguida, selecionamos o total de ID_PRODUTO na
tabela de venda_produto, nomeada de V.
Em seguida, nas linhas 6 e 7 definimos que a consulta será feita na tabela produto, nomeada de P, e em
seguida, nas linhas 8 e 9 realizamos um INNER JOIN na tabela categoria_produto, nomeada de C, e logo
na linha 10 informamos que a condição para a junção das duas tabelas é o ID da categoria ser o mesmo nas
duas tabelas. Nas linha 11 e 12 adicionamos mais uma tabela, a tabela venda_produto, nomeada de V. Em
seguida, na linha 13 informamos que essa tabela só será adicionada se o id do produto for o mesmo na tabela de
produto e venda_produto. Por fim, agrupamos o resultado por produto, na linha 14.
A palavra-chave INNER JOIN seleciona todas as linhas das duas tabelas, desde que haja correspondência entre
as colunas. Se houver algum registro em uma das tabelas que não tenha correspondência na outra tabela, esses
registros não serão exibidos.
Exemplo 3
Para o exemplo a seguir, considere a estrutura de tabelas abaixo, onde temos a tabela projeto (Tabela 6),
responsável por manter todos os projetos da empresa, e a tabela comentario (Tabela 7), responsável por manter
todos os comentários referentes aos projetos cadastrados no banco de dados.
ID Titulo Data
ID Titulo Data
SELECT
P.id,
P.titulo
FROM
projetos P
INNER JOIN
comentario C
ON
C.id_projeto = P.id
GROUP BY
P.id
Observe que selecionamos o id e o titulo do projeto e logo na Linha 6 utilizamos INNER JOIN para relacionar
as duas tabelas. Na Linha 9 realizamos o vinculo entre as duas tabelas, onde a coluna id_projeto da tabela
comentario é o mesmo que a coluna id da tabela projeto.
ID Titulo