Imagine que você começou a trabalhar em um e-commerce.

No primeiro dia, seu gerente faz uma pergunta simples:

Quantos clientes já se cadastraram, mas nunca realizaram uma compra?

Não é uma pergunta sobre SQL.

É uma pergunta de negócio.

E é exatamente isso que um analista recebe no dia a dia.

Ninguém pede um LEFT JOIN.

Ninguém pede um IS NULL.

As pessoas fazem perguntas.

Cabe ao analista descobrir como respondê-las.


Antes do SQL, pense no problema

Antes de abrir o editor, vamos entender a situação.

Temos duas tabelas.

A primeira guarda os clientes cadastrados.

  • cliente

A segunda registra os pedidos realizados.

  • pedido

A pergunta é:

Quais clientes existem na tabela CLIENTE, mas não possuem nenhum registro correspondente na tabela PEDIDO?

Perceba que ainda não escrevemos uma linha de SQL.

Estamos apenas entendendo o problema.


Como um analista pensa?

Nesse momento, o raciocínio costuma seguir esta sequência.

Primeira pergunta

Quem precisa aparecer no resultado?

Resposta:

Todos os clientes.

Mesmo aqueles que nunca compraram.


Segunda pergunta

Onde descubro se o cliente realizou alguma compra?

Na tabela de pedidos.


Terceira pergunta

Como relaciono essas informações?

Pela chave do cliente.

Só depois dessas respostas começamos a escrever a consulta.


A solução

Seguindo o padrão utilizado aqui no Blog do SQL:

SELECT
c.ID_CLIENTE,
c.NOME
FROM cliente c
LEFT JOIN pedido p
ON c.ID_CLIENTE = p.ID_CLIENTE
WHERE p.ID_PEDIDO IS NULL;

Essa consulta retorna apenas os clientes que não possuem nenhum pedido registrado.


Por que usamos LEFT JOIN?

Esse é um dos pontos que mais confundem quem está aprendendo SQL.

Muita gente tenta resolver esse problema utilizando INNER JOIN.

Mas existe um detalhe importante.

O INNER JOIN retorna apenas os registros que existem nas duas tabelas.

Neste caso, queremos justamente o contrário.

Queremos encontrar quem não possui correspondência.

Por isso utilizamos o LEFT JOIN.

Ele mantém todos os clientes no resultado.

Quando um cliente não possui pedido, as colunas da tabela PEDIDO ficam com valor NULL.

É exatamente isso que aproveitamos no filtro.


O papel do IS NULL

Depois do relacionamento, basta identificar os clientes que ficaram sem correspondência.

É por isso que utilizamos:

WHERE p.ID_PEDIDO IS NULL;

Essa condição elimina todos os clientes que possuem pedidos.

Restam apenas aqueles que nunca compraram.


Esse tipo de consulta aparece o tempo todo

Embora este exemplo utilize clientes e pedidos, o mesmo raciocínio aparece em diversos cenários.

Por exemplo:

  • produtos que nunca foram vendidos;
  • alunos que nunca acessaram um curso;
  • funcionários sem treinamentos;
  • fornecedores sem contratos;
  • clientes sem atendimento.

O padrão lógico é exatamente o mesmo.

Muda apenas o contexto.


O erro mais comum

Quando alguém está começando, costuma decorar a ideia de que:

“LEFT JOIN serve para trazer tudo.”

Mas isso não resolve o problema.

O importante é entender por que ele está sendo utilizado.

Neste caso, ele existe porque queremos preservar todos os clientes, inclusive aqueles que não possuem registros relacionados.

Quando você entende o motivo, deixa de decorar comandos e passa a tomar decisões.


Continue investigando…

Agora tente responder outras perguntas utilizando o mesmo banco de dados.

  • Quais produtos nunca foram vendidos?
  • Quais vendedores nunca realizaram uma venda?
  • Quais categorias não possuem produtos cadastrados?
  • Quais clientes fizeram exatamente um pedido?

Perceba que todas essas perguntas seguem o mesmo padrão lógico.


O que você aprendeu neste artigo?

Mais do que aprender LEFT JOIN, você aprendeu a transformar uma pergunta de negócio em uma consulta SQL.

Esse é o ponto mais importante.

No mercado, ninguém vai perguntar:

“Você sabe usar LEFT JOIN?”

As perguntas serão parecidas com esta:

“Você consegue descobrir quais clientes nunca compraram?”

E é exatamente aí que o SQL se torna uma ferramenta para resolver problemas reais.


Próximo passo

Esse é apenas um dos diversos cenários que utilizo na Coleção A Arte da Query.

Lá você encontra problemas semelhantes aos que aparecem no dia a dia de quem trabalha com dados, sempre partindo de uma pergunta de negócio e chegando à construção da consulta SQL.

Se o seu objetivo é deixar de decorar comandos e começar a desenvolver raciocínio, esse é o próximo passo natural.

Link: https://artedaquery.com.br/

Tags: | | |

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Solicitar exportação de dados

Use este formulário para solicitar uma cópia de seus dados neste site.

Solicitar a remoção de dados

Use este formulário para solicitar a remoção de seus dados neste site.

Solicitar retificação de dados

Use este formulário para solicitar a retificação de seus dados neste site. Aqui você pode corrigir ou atualizar seus dados, por exemplo.

Solicitar cancelamento de inscrição

Use este formulário para solicitar a cancelamento da inscrição do seu e-mail em nossas listas de e-mail.