Pular para o conteúdo principal
Documentos
Sintaxe básicaFunções JSONAcionadoresGerenciamento de tabelas e esquemasFunções de cadeia de caracteresFunções matemáticasFunções de dataBancos de dadosÍndices

PostgreSQL LEFT JOIN

O `LEFT JOIN` no PostgreSQL é um tipo de união que retorna todas as linhas da tabela da esquerda e as linhas correspondentes da tabela da direita. Se não houver correspondência, o resultado será NULL no lado da tabela correta.

Uso

O `LEFT JOIN` é usado quando você deseja recuperar todos os registros da tabela da esquerda e os registros correspondentes da tabela da direita. É particularmente útil para encontrar registros sem correspondência na tabela certa.

sql
SELECT columns
FROM left_table
LEFT JOIN right_table ON left_table.common_column = right_table.common_column;

Nessa sintaxe, `LEFT JOIN` garante que todas as linhas de `left_table` sejam incluídas e que as linhas correspondentes de `right_table` sejam adicionadas quando disponíveis.

Exemplos

1. Básico LEFT JOIN

sql
SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;

Este exemplo recupera todos os nomes de funcionários e seus nomes de departamento. Se um funcionário não estiver atribuído a um departamento, o nome do departamento será NULL.

2. LEFT JOIN com uma cláusula WHERE

sql
SELECT orders.order_id, customers.customer_name
FROM orders
LEFT JOIN customers ON orders.customer_id = customers.id
WHERE orders.order_date = '2023-10-01';

Aqui, todos os pedidos feitos em 1º de outubro de 2023 são selecionados, inclusive aqueles sem registros de clientes correspondentes, que mostrarão `NULL` para `customer_name`.

3. Encadeamento de vários LEFT JOINs

sql
SELECT products.product_name, categories.category_name, suppliers.supplier_name
FROM products
LEFT JOIN categories ON products.category_id = categories.id
LEFT JOIN suppliers ON products.supplier_id = suppliers.id;

Este exemplo mostra como você pode usar várias cláusulas `LEFT JOIN` para reunir dados de três tabelas: `produtos`, `categorias` e `fornecedores`.

4. Manipulação de valores NULL com COALESCE

sql
SELECT employees.name, COALESCE(departments.department_name, 'No Department') AS department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;

Nesse exemplo, `COALESCE` é usado para substituir `NULL` por 'No Department', fornecendo um valor padrão para registros sem correspondência.

Dicas e práticas recomendadas

  • Use para garantir a inclusão. Aplique `LEFT JOIN` quando você precisar de todos os registros da tabela da esquerda, independentemente das correspondências na tabela da direita.
  • Otimize com índices. Certifique-se de que as colunas usadas na cláusula `ON` sejam indexadas para melhorar o desempenho. Esteja ciente dos possíveis impactos no desempenho ao trabalhar com grandes conjuntos de dados e várias uniões.
  • Trate os NULLs com cuidado. Esteja preparado para gerenciar valores `NULL` no conjunto de resultados, especialmente ao realizar cálculos ou transformações adicionais. Use funções como `COALESCE` para lidar com valores `NULL` de forma eficaz.
  • Combine com outras cláusulas. Use `LEFT JOIN` em conjunto com `WHERE`, `GROUP BY` ou `ORDER BY` para refinar e organizar seus resultados de forma eficaz.