Formation PUB200 : MySQL, 2018 Manipulation des champs affichés

8.3 Compter seulement les champs ayant une valeur distincte


Dans un contexte particulier, il pourrait arriver que vous ayez à compter seulement les champs ayant une valeur distincte.

Par exemple, prenons une base de données permettant à des étudiants de publier leur portfolio en listant les travaux réalisés pendant leurs études. Cette base de données contient des étudiants, des travaux, des institutions et des diplômes. Dans le contexte de cette BD, un étudiant peut détenir plus d'un diplôme d'une même institution.

Base de données pour démonstration COUNT DISTINCT

Si on voulait compter les travaux réalisés par l'ensemble des étudiants d'une institution, un même travail apparaîtrait deux fois si l'étudiant qui l'a réalisé détient deux diplômes de cette institution. Par exemple, un étudiant pourrait avoir fait son cours en Techniques de comptabilité et de gestion puis en Techniques de l'informatique au Cégep de Victoriaville. Un travail réalisé en Techniques de l'informatique serait compté deux fois avec la requête suivante :

MySQL

SELECT COUNT(*) FROM travaux

INNER JOIN diplomesetudiants ON travaux.etudiant_id = diplomesetudiants.etudiant_id

WHERE inst_id=1;

Pour régler ce problème, on ajoutera une clause DISTINCT dans le COUNT() afin de s'assurer de ne pas compter le même travail deux fois :

MySQL

SELECT COUNT(DISTINCT travail_id) FROM travaux

INNER JOIN diplomesetudiants ON travaux.etudiant_id = diplomesetudiants.etudiant_id

WHERE inst_id = 1

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre