Tabela de Conteúdos
JOIN
O que é?
É um comando do MySQL que permite a seleção de dados em mais de uma tabela, sendo possível manipular esses dados da mesma forma que fazíamos ao buscar em apenas uma tabela.
Tipos
Existem 4 tipos de JOINs que serão abordados logo adiante.
INNER JOIN
O que é?
É um comando que permite a seleção de informações em diferentes tabelas, desde que a informação em questão seja compartilhada por ambas.
Sintaxe
A sintaxe do INNER JOIN
é relativamente simples, selecionamos as colunas que desejamos de cada tabela, assim como em um SELECT
comum.
Após definirmos as colunas que queremos, invocamos as tabelas da seguinte forma, a primeira deve ser chamada com o comando FROM
, e apelidada com o AS
para facilitar referências, já a segunda deve ser chamada pelo comando INNER JOIN
e apelidada da mesma forma.
E por fim, depois de termos invocado as tabelas que queremos, precisamos dizer de forma explícita qual coluna esta sendo compartilhada por ambas as tabelas, para isso utilizamos o comando ON
, seguido de uma comparação de igualdade.
SELECT <t1>.<coluna1>, <t2>.<coluna2>, <t2>.<coluna3>
FROM <tabela1> AS <t1>
INNER JOIN <tabela2> AS <t2>
ON <t1>.<coluna em comum> = <t2>.<coluna em comum>;
SELECT A.first_name, A.actor_id, F.actor_id
FROM sakila.actor AS A
INNER JOIN film_actor AS F
ON A.actor_id = F.actor_id;
LEFT JOIN e RIGHT JOIN
O que são?
São comandos de unificação de tabelas assim como o INNER JOIN
, porém tanto o LEFT JOIN
, quanto o RIGHT JOIN
, não trazem só as informações que existem em ambas as tabelas, isso porque esses comandos priorizam uma das tabelas selecionadas e caso falte informação, eles automaticamente completam os valores faltantes com Null
.
Sintaxe
A sintaxe segue exatamente a mesma estrutura do INNER JOIN
, sendo que a única diferença é que a ordem na qual definimos as tabelas importa.
Ao usarmos o LEFT JOIN
estamos priorizando a coluna que definimos a esquerda do JOIN, e ao usar o RIGHT JOIN
a coluna a ser priorizada passa a ser a da direita.
SELECT <t1>.<coluna1>, <t2>.<coluna2>, <t3>.<coluna3>
FROM <tabela1> AS <t1>
LEFT JOIN <tabela2> AS <t2>
ON <t1>.<coluna em comum> = <t2>.<coluna em comum>;
SELECT A.actor_id, C.costumer_id, C.first_name,
FROM sakila.actor AS A
LEFT JOIN sakila.customer AS C
ON A.last_name = C.last_name;
SELECT <t1>.<coluna1>, <t2>.<coluna2>, <t3>.<coluna3>
FROM <tabela1> AS <t1>
RIGHT JOIN <tabela2> AS <t2>
ON <t1>.<coluna em comum> = <t2>.<coluna em comum>;
SELECT A.actor_id, C.costumer_id, C.first_name,
FROM sakila.actor AS A
RIGHT JOIN sakila.customer AS C
ON A.last_name = C.last_name;
Self Join
O que é?
O SELF JOIN
diferente dos outros JOINs que vimos até agora, isso por que ele não é um comando, mas sim um caso onde a tabela realiza um JOIN consigo mesma. Sendo assim, podemos utilizar qualquer tipo de JOIN visto anteriormente para aplicar um SELF JOIN
.
Sintaxe
A sintaxe segue exatamente a dos JOINs anteriores, sendo que a única diferença é que iremos pegar dados de apenas um tabela.
SELECT
CONCAT(Employee.FIRST_NAME, " ", Employee.LAST_NAME) AS "Nome da Pessoa Colaboradora",
CONCAT(Manager.FIRST_NAME, " ", Manager.LAST_NAME) AS "Nome Gerente"
FROM sakila.employees AS Employee
INNER JOIN sakila.employees AS Manager
ON Employee.MANAGER_ID = Manager.EMPLOYEE_ID;
Top comments (0)