1
resposta

Utilizando Group By ao invés de distinct

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;
1 resposta

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.