20th Jul 2022 7 minutos de leitura O que é JOIN à ESQUERDA em SQL? Kateryna Koidan sql aprender sql sql joins Índice JOIN em SQL JUNTO ESQUERDA Explicado Como funciona o LEFT JOIN? SQL LEFT JOINs em uso Exemplo com funcionários Exemplo com países Hora de Praticar a JUNTA ESQUERDA! Conheça os detalhes do LEFT JOIN, um dos tipos mais comuns de SQL JOIN. SQL é principalmente sobre a obtenção de dados de bancos de dados. Muito freqüentemente, será necessário combinar dados de múltiplas tabelas em seu banco de dados. É aí que os JOINs entram em jogo. O LEFT JOIN é um dos tipos de JOIN que você provavelmente usará com muita freqüência. Neste artigo, explicarei a sintaxe do LEFT JOIN e como ele funciona usando vários exemplos e ilustrações. JOIN em SQL Em SQL, você usa JOIN para combinar dados de duas tabelas baseadas em uma coluna com valores correspondentes. Por exemplo, se você tiver uma tabela com informações do cliente (ID do cliente, nome, sobrenome, etc.) e outra tabela com os dados do pedido para um período específico (ID do pedido, data, ID do cliente, ID do produto, etc.) você pode unir essas duas tabelas com base nas colunas que armazenam os números de ID do cliente. Isto lhe dará os dados do pedido e do cliente para cada cliente. Entretanto, é importante saber que existem diferentes tipos de JOINs em SQL. Você precisará escolher a correta com base nas linhas que deseja manter no conjunto de resultados. Se você estiver interessado em clientes que só fizeram pedidos durante um período de tempo específico, você usará um simples JOIN (também chamado INNER JOIN). Este tipo de SQL JOIN mantém apenas as linhas que estão presentes em ambas as tabelas; em nosso caso, você verá uma linha no conjunto de resultados somente se a identificação do cliente estiver na tabela customers bem como a tabela orders mesa. Há casos em que você deseja manter linhas da primeira tabela que não têm os registros correspondentes na segunda tabela. Podemos querer ver informações sobre todos os clientes em nosso conjunto de resultados, mesmo que eles não tivessem pedidos em um período de tempo específico. Neste caso, você usará um LEFT JOIN, que combina os dados de duas tabelas para que todas as linhas da (primeira) tabela da esquerda sejam incluídas no resultado. Este é o tipo de JOIN que vamos focar neste artigo. Se você não tiver certeza de qual tipo de JOIN você precisa em um caso em particular, confira nosso vídeo tutorial em SQL ESQUERDA, DIREITA e FULL JOINs. JUNTO ESQUERDA Explicado LEFT JOINO sistema de registro de dados da esquerda, também chamado LEFT OUTER JOIN, retorna todos os registros da esquerda (primeira) tabela e os registros correspondentes da direita (segunda) tabela. Se não houver correspondência para um registro específico, você receberá NULLs nas colunas correspondentes da tabela da direita. Vamos ver como funciona com os clientes e o exemplo de pedidos mencionado acima. Aqui estão nossas customers e orders tabelas. customers idfirst_namelast_name 1SteveBrown 2HelenStewart 3JaneSmith 4JackBond orders iddatecustomer_idproduct_idamount 12020-12-20323213.99 22020-12-20312412.45 32020-12-2111889.95 42020-12-224854.60 Para unir essas duas tabelas, mantendo todos os registros do customers você pode usar a seguinte consulta SQL: SELECT * FROM customers LEFT JOIN orders ON customers.id = orders.customer_id ORDER BY customers.id; Vamos analisar a sintaxe de LEFT JOIN: SELECT - Comece listando as colunas (de ambas as tabelas) que você quer ver no conjunto de resultados (aqui selecionamos todas as colunas usando *); FROM - Coloque o nome da tabela da esquerda, aquela onde você quer manter todos os registros (ou seja customers); LEFT JOIN - Escreva o nome da segunda (direita) tabela (i.e.) orders); ON - Use esta palavra-chave para indicar as colunas que serão usadas para unir as tabelas, ou seja, aquelas com os valores correspondentes. (Aqui, é id de customers e customer_id de orders). Nesta consulta, também usamos ORDER BY para solicitar a saída por identificação do cliente, mas isto é opcional. Depois de executar esta consulta, você receberá a seguinte tabela. customersorders idfirst_namelast_nameiddatecustomer_idproduct_idamount 1SteveBrown12020-12-2111889.95 2HelenStewart[NULL][NULL][NULL][NULL][NULL] 3JaneSmith32020-12-20323213.99 3JaneSmith32020-12-20312412.45 4JackBond42020-12-224854.60 Dê uma olhada na animação: Como funciona o LEFT JOIN? Primeiro de tudo, o banco de dados procura em cada linha da tabela da esquerda e procura uma correspondência na tabela da direita com base nas colunas relacionadas. Se houver uma correspondência, ele adiciona dados da tabela da direita à linha correspondente da tabela da esquerda. Se houver várias correspondências (como no nosso caso com o cliente nº 3), ele duplica a linha da tabela da esquerda para incluir todos os registros da tabela da direita. Se não houver correspondência, ele ainda mantém a linha da tabela da esquerda e coloca NULL nas colunas correspondentes da tabela da direita (cliente nº 2 em nosso exemplo). Simples, não é assim? Você pode praticar o LEFT JOINs neste curso interativo Cláusulas JOIN em SQL . E agora vamos analisar mais alguns exemplos de trabalho com LEFT JOINs. SQL LEFT JOINs em uso Exemplo com funcionários Temos uma tabela com employees e quer corresponder com a tabela que lista todos os bônus pagos em janeiro (jan_bonuses). employees idfirst_namelast_name 1JoeBiden 2BernieSanders 3PeterButtigieg 4ElizabethWarren 5MichaelBloomberg jan_bonuses idemployee_idamount 10113460.00 10222340.00 10341800.00 Queremos nos juntar a estas mesas para ver quem recebeu bônus em janeiro. Nosso resultado deve incluir todos os funcionários, não importa se eles receberam ou não um bônus. Assim, vamos utilizar um LEFT JOIN: SELECT * FROM employees LEFT JOIN jan_bonuses ON employees.id = jan_bonuses.employee_id; employeesjan_bonuses idfirst_namelast_nameidemployee_idamount 1JoeBiden10113460.00 2BernieSanders10222340.00 3PeterButtigieg[NULL][NULL][NULL] 4ElizabethWarren10341800.00 5MichaelBloomberg[NULL][NULL][NULL] Como esperado, o resultado inclui todos os funcionários. Se um funcionário não for encontrado na tabela com informações de bônus, as colunas correspondentes da segunda tabela são preenchidas com valores NULL. Interessado em saber como funcionam outras OUTER JOINs? Leia este guia ilustrado do SQL OUTER JOIN para saber como o RIGHT OUTER JOIN e o FULL OUTER JOIN diferem do LEFT OUTER JOIN. Exemplo com países Em nosso exemplo final, vamos juntar duas tabelas usando LEFT JOIN, mas incluiremos apenas colunas selecionadas no resultado final. Temos uma lista de países com algumas informações básicas e queremos complementá-la com os dados do PIB de 2019, onde tais dados estiverem disponíveis. countries idnamepopulationcurrencyarea 201United States330,770,244USD9,525,067 202China1,405,631,120CNY9,596,961 203Japan125,770,000JPY377,975 204Germany83,122,889EUR357,114 205India1,370,521,240INR3,287,263 gdp_2019 rankcountry_idgdp_nominal_MUSD 120121,427,700 220214,342,903 32035,081,770 Em nossa produção, não precisamos de todas as informações sobre cada país - apenas a identificação do país, nome, população e PIB nominal para 2019. Aqui está a consulta que vamos usar: SELECT id, name, population, gdp_nominal_MUSD FROM countries LEFT JOIN gdp_2019 ON countries.id = gdp_2019.country_id; countriesgdp_2019 idnamepopulationgdp_nominal_MUSD 201United States330,770,24421,427,700 202China1,405,631,12014,342,903 203Japan125,770,0005,081,770 204Germany83,122,889[NULL] 205India1,370,521,240[NULL] A tabela inclui três colunas da countries tabela e uma coluna da gdp_2019 mesa. Como esperado, a LEFT JOIN mantém todos os registros da primeira tabela e entradas NULL valores para os registros inigualáveis. Note que nesta declaração SELECT, simplesmente listamos os nomes das colunas que queremos ver no resultado. Isto só funciona quando não temos colunas com o mesmo nome em ambas as tabelas. A abordagem mais segura é especificar a tabela para cada coluna que solicitamos, ou seja, countries.id, countries.name, countries.population, gdp_2019.gdp_nominal_MUSD. Se você precisar unir mais de duas tabelas à esquerda, leia meu guia à esquerda - unindo várias tabelas em SQL. Hora de Praticar a JUNTA ESQUERDA! Você aprendeu a sintaxe de LEFT JOIN e sabe quando e como usar este tipo de SQL JOIN. Você está pronto para o próximo passo - escrever suas próprias consultas SQL com o LEFT JOINs. Eu recomendo começar com nossa Cláusulas JOIN em SQL curso, que inclui 93 exercícios interativos abrangendo INNER JOIN, OUTER JOINs, non-equi JOINs, e muito mais. Após terminar este curso, você saberá como escolher o tipo correto de JOIN, como unir várias mesas, como unir uma mesa consigo mesmo e como unir mesas usando outros operadores condicionais além da igualdade. Você se sente inseguro sobre a prática do Cláusulas JOIN em SQL online? Confira este artigo que apresenta as melhores abordagens para a prática de diferentes tipos de Cláusulas JOIN em SQL. Obrigado por ler, e feliz aprendizado! Tags: sql aprender sql sql joins