Fiz essa modificação, pq funcionou?
SELECT A.CPF, A.NOME, B.CPF FROM tabela_de_clientes A
LEFT JOIN notas_fiscais B
ON A.CPF = B.CPF
GROUP BY A.CPF;
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Fiz essa modificação, pq funcionou?
SELECT A.CPF, A.NOME, B.CPF FROM tabela_de_clientes A
LEFT JOIN notas_fiscais B
ON A.CPF = B.CPF
GROUP BY A.CPF;
Vitor,
Como disse o Shrek: "- Good question".
Putz, é mais difícil explicar do que entender... mas vou tentar explicar:
A função do DISTINCT é ELIMINAR registros duplicados dependendo de TODOS os campos listados no respectivo SELECT.
A função do GROUP BY é AGRUPAR campo(s) duplicado(s) usando uma FUNÇÃO agregada, exemplos: "COUNT", "SUM", "MAX", "MIN", etc....
Você pode combinar as duas funções também.
Montei um exemplo que ficou um pouco tosco... veja que no GROUP BY estão TODOS os CODIGO_DO_PRODUTO da tabela, isso NÃO é possível no DISTINCT.
-- 1 registro encontrado:
SELECT DISTINCT CODIGO_DO_PRODUTO, COUNT(quantidade)
FROM itens_notas_fiscais
ORDER BY CODIGO_DO_PRODUTO;-- 30 registros encontrados:
SELECT CODIGO_DO_PRODUTO, COUNT(quantidade)
FROM itens_notas_fiscais
GROUP BY CODIGO_DO_PRODUTO
ORDER BY CODIGO_DO_PRODUTO;Segue alguns links interessantes que você precisa ler:
==========================================================
GROUP BY x vs DISTINCT( x )
https://stackoverflow.com/questions/24335910/group-by-x-vs-distinct-x
==========================================================
A Cláusula SELECT DISTINCT em SQL
A sua tabela pode conter valores duplicados numa coluna e em certos cenários pode necessitar de ir buscar apenas registos únicos à tabela.
Para remover os registos duplicados para os dados obtidos com a instrução SELECT, pode utilizar a cláusula DISTINCT como se mostra nos exemplos abaixo.
A cláusula DISTINCT com GROUP BY example
A seguinte consulta vai buscar os registos à mesma tabela utilizada nos exemplos acima e agrupa os funcionários que pagaram salários. Para isso, as cláusulas GROUP BY e DISTINCT são utilizadas da seguinte forma:
https://homehealthcarereport.com/pt/a-cl%C3%A1usula-select-distinct-em-sql/
==========================================================
MySQL – GROUP BY – Agrupamento de Registros
http://www.bosontreinamentos.com.br/mysql/mysql-group-by-agrupamento-de-registros-26/
==========================================================
Ixi... eu mesmo não gostei muito desta explicação... mas espero que você tenha entendido...
[]'s,
Fabio I.