
Um JOIN aparentemente correto pode multiplicar linhas, inflar valores e alterar indicadores sem gerar nenhum erro de execução. Entender cardinalidade é uma habilidade essencial para quem trabalha com relatórios.
O problema começa antes do JOIN
Em ambiente corporativo, duas tabelas raramente se relacionam de forma tão simples quanto parece. Uma tabela de clientes pode ter uma linha por cliente, enquanto uma tabela de pedidos tem várias linhas para o mesmo cliente. Quando isso é esperado, o relacionamento é de um-para-muitos. O risco aparece quando os dois lados possuem repetições na chave usada no JOIN e o analista assume que existe apenas uma ocorrência.
1. O efeito de multiplicação de linhas
Imagine uma tabela com duas ocorrências para um cliente e outra com três ocorrências para esse mesmo cliente. Um JOIN usando apenas o identificador do cliente pode produzir seis linhas. O SQL não considera isso um erro: ele está cumprindo exatamente a regra informada. O problema é que somas de receita, quantidade, horas ou custos podem ser duplicadas ou triplicadas.
2. Confira a granularidade antes de relacionar
Antes de escrever o JOIN, pergunte: o que representa uma linha em cada tabela? Cliente? Contrato? Fatura? Item de pedido? Mês? Unidade? Essa pergunta simples evita grande parte dos erros. Se a granularidade das tabelas for diferente, talvez seja necessário agregar uma delas antes do relacionamento ou usar mais colunas na condição de junção.
3. Teste a unicidade das chaves
Uma prática corporativa valiosa é testar se a chave que você acredita ser única realmente é. Agrupe pela chave, conte as ocorrências e procure valores com contagem maior que um. Esse pequeno teste deve acontecer antes de confiar em qualquer indicador construído a partir do JOIN.
4. Compare contagens antes e depois
Outra técnica é registrar quantas linhas existem antes e depois de cada etapa importante da consulta. Se uma tabela com dez mil registros passa para quarenta mil logo após um JOIN, a mudança precisa ser explicada. Às vezes ela é correta; muitas vezes revela uma cardinalidade não percebida.
5. Cuidado com DISTINCT como “remédio”
Usar DISTINCT para remover duplicidades pode mascarar o problema. Ele elimina linhas idênticas, mas não corrige uma regra de relacionamento inadequada. Pior: pode esconder a causa e fazer o relatório parecer correto por algum tempo. O ideal é compreender por que as linhas foram multiplicadas.
Na vida corporativa
Quando números alimentam dashboards, metas, orçamento ou decisões gerenciais, um JOIN incorreto pode gerar consequências muito maiores do que uma consulta lenta. A melhor proteção é combinar técnica com disciplina: conhecer a granularidade, validar as chaves e conferir os totais em cada etapa.
Conclusão
Dominar JOIN significa muito mais do que saber escrever INNER, LEFT ou RIGHT JOIN. Significa entender como os dados se relacionam. Essa visão reduz erros silenciosos e aumenta a confiança nos números apresentados para o negócio.