12th Dec 2022 5 minutos de leitura Um Guia Ilustrado para o SQL INNER JOIN Dorota Wdzięczna join noções básicas de sql Cláusulas SQL Índice O que é um INNER JOIN? Como funciona o INNER JOIN JOIN ou INNER JOIN? Juntando-se a ONDE Usando um INNER JOIN em Múltiplas Tabelas INNER JOIN vs. CROSS JOIN Saiba mais sobre a INNER JOINs O que é um SQL INNER JOIN, e como funciona? Vamos descobrir! Em meu último artigo, eu discuti o Operação CROSS JOIN em SQL. Hoje, veremos INNER JOIN e como utilizá-lo. É o mesmo que um JOIN? Quantas tabelas você pode vincular com um INNER JOIN? Todas estas são boas perguntas. Vejamos as respostas! O que é um INNER JOIN? INNER JOIN combina dados de várias tabelas, unindo-as com base em um registro correspondente. Este tipo de junção requer uma condição de união, que explicaremos dentro de momentos. Para ilustrar como funciona INNER JOIN, usaremos algumas tabelas simples. Duas delas, color e shoes são mostrados abaixo: color id name 1 yellow 2 green 3 pink shoes id size color_id 1 seven 2 2 eight 2 3 nine 2 4 seven 1 5 nine 1 6 seven 3 7 ten NULL O color tabela armazena um número de identificação e um nome para cada cor. O shoes tabela armazena um número de identificação para cada par de sapatos, o tamanho do sapato, e um número de identificação que se refere a uma cor na tabela color mesa. Como funciona o INNER JOIN Neste exemplo, INNER JOIN junta-se aos registros da shoes tabela com os registros do color tabela através da coluna color_id da shoes mesa. Os valores nesta coluna são os mesmos que os da coluna id da color de forma que produz o conjunto de resultados pretendido. Dê uma olhada na consulta a seguir: SELECT * FROM shoes INNER JOIN color ON color.id = shoes.color_id; A declaração SELECT retira todos os registros da tabela listada após a cláusula FROM - neste caso, o shoes mesa. Depois há um INNER JOIN com o nome da tabela com a qual queremos comparar registros (ou seja, a color tabela). O predicado ON indica a condição de correspondência, que os registros de ambas as tabelas devem ter. Aqui a condição é que o campo id do color tabela e o campo color_id do shoes A tabela deve ter valores correspondentes. Se um registro não tiver uma correspondência, ele será deixado de fora dos resultados. Dê uma olhada no resultado definido a partir desta consulta: id size color_id id name 1 seven 2 2 green 2 eight 2 2 green 3 nine 2 2 green 4 seven 1 1 yellow 5 nine 1 1 yellow 6 seven 3 3 pink Agora podemos ver a cor de cada par de sapatos, graças ao INNER JOIN. Mas note que o shoes com NULL na coluna color_id não é mostrado: não correspondeu a nenhum dos registros no color mesa. JOIN ou INNER JOIN? Você pode omitir a parte INNER de INNER JOIN; JOIN funciona da mesma maneira. Veja a declaração abaixo. SELECT * FROM shoes JOIN color ON color.id = shoes.color_id; Juntando-se a ONDE Você também pode usar uma cláusula WHERE como uma INNER JOIN. (Esta é uma versão mais antiga da sintaxe SQL (ANSI-89); os comandos JOIN usam ANSI-92). Aqui está como funciona o uso de um WHERE: SELECT * FROM shoes, color WHERE color.id = shoes.color_id ; O resultado é o mesmo: id size color_id id name 1 seven 2 2 green 2 eight 2 2 green 3 nine 2 2 green 4 seven 1 1 yellow 5 nine 1 1 yellow 6 seven 3 3 pink Usando um INNER JOIN em Múltiplas Tabelas INNER JOIN pode ser usado em mais de duas mesas. Veja as três tabelas abaixo: color id name 1 yellow 2 green 3 pink material id name 1 leather 2 cotton 3 NULL shoes id size color_id material_id 1 seven 2 1 4 seven 1 2 5 nine 1 1 6 seven 3 NULL 7 ten NULL 1 Vamos usar um INNER JOIN para combinar informações em todas as três tabelas. A consulta abaixo recupera registros para todos os sapatos que possuem informações de cor e material: SELECT * FROM shoes JOIN color ON color.id = shoes.color_id JOIN material ON material.id = shoes.material_id ; Observe que apenas os sapatos com registros nãoNULL nas colunas color_id e material_id são mostrados no conjunto de resultados. id size color_id material_id id name id name 1 seven 2 1 2 green 1 leather 4 seven 1 2 1 yellow 2 cotton 5 nine 1 1 1 yellow 1 leather INNER JOIN vs. CROSS JOIN Como já vimos, INNER JOIN combina informações de dois ou mais registros que possuem campos correspondentes. O que acontece quando você usa CROSS JOIN para se juntar à shoes e color CROSS JOIN não aceita nenhuma condição ON, o que significa que ele devolve um produto cartesiano. Dê uma olhada na consulta e no resultado apresentados abaixo: SELECT * FROM shoes CROSS JOIN color ; Resultado? id size color_id id name 1 seven 2 1 yellow 2 eight 2 1 yellow 3 nine 2 1 yellow 4 seven 1 1 yellow 5 nine 1 1 yellow 6 seven 3 1 yellow 7 ten NULL 1 yellow 1 seven 2 2 green 2 eight 2 2 green 3 nine 2 2 green 4 seven 1 2 green 5 nine 1 2 green 6 seven 3 2 green 7 ten NULL 2 green 1 seven 2 3 pink 2 eight 2 3 pink 3 nine 2 3 pink 4 seven 1 3 pink 5 nine 1 3 pink 6 seven 3 3 pink 7 ten NULL 3 pink Todos os registros do shoes tabela foram unidos com todos os registros do color mesa. Isto cria alguns erros. Por exemplo, alguns sapatos não estão listados com a cor correta: os sapatos de tamanho oito só estão disponíveis em verde (seu valor color_id é 2), mas nesta junção, eles são combinados com outras cores. O NULL registra no shoes A tabela também é combinada com cores, mesmo que não tenham um valor comparável no campo color_id. Saiba mais sobre a INNER JOINs INNER JOINs são bastante comuns em SQL. Nosso objetivo neste artigo foi introduzir os conceitos por trás do INNER JOIN, mas há muito mais a aprender. Por que não verificar o LearnSQL's SQL para Iniciantes curso para saber mais? Tags: join noções básicas de sql Cláusulas SQL