Bonjour erwan83 ,
la clause DISTINCT affiche chaque champ présent dans la table.
ex :
un champ a la même valeur 25 fois. ( un nom de famille par exemple )
la requête va te renvoyer 25 lignes.
Pour l'usage de "GROUP BY", c'est un impératif dès que tu utilises max( ) , min( ) , etc .... ou les alias pour renommer une colonne.
c'est le moteur SQL qui a besoin de ce regroupement, pour travailler sur les lignes de la colonne concernée.
C'est vraiment un comportement d'ordinateur ( bête et re-bête ).
Une requete SQL , c'est une instance, c'est une instruction pour le moteur SQL.
Mal écrite, c'est 'error num x000 .....'.
le 'group by' est attendu, comme paramètre, dès les fonctions de calculs sur colonnes. l'un sans l'autre ne marchera jamais.
Si tu souhaites en savoir plus :
regardes ce qu'est "l'algèbre relationnel",
c'est les 'opérations de bases' pour l'éxècution des requêtes dans les technos Db.
tu verra pourquoi sans le GROUP BY , les min / max / avg / alias font 'bug'.
{ MIN / MAX / AVG / ALIAS.. opérations sur colonnes } ===> GROUP BY
Bien sur c'est sur la norme SQL , il y a quelques libertés selon les moteurs. ( ou un setup à faire ? )
---------------
Nom : Prénom : Age : Adresse : Ville : Code Postal : Num Trois Tel