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.
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 :
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 :
SELECT COUNT(DISTINCT travail_id) FROM travaux
INNER JOIN diplomesetudiants ON travaux.etudiant_id = diplomesetudiants.etudiant_id
WHERE inst_id = 1
▼Publicité