Rappel de la commande SELECT

Comme nous l’avons vu précédemment,  la commande SELECT permet de façon générale la récupération de toutes les lignes d’une table. Elle renvoie toute colonne ou toute ligne de la base de données sur laquelle la requête s’applique. Ces informations retournées autrement dit les contenues des lignes et des colonnes peuvent contenir des données répétitives si une table contient des doublons (les tuples dupliquées ou la saisie répétitive des mêmes informations dans des tables). Pour éviter ce désagrément, on ajoute la clause DISTINCT à la commande SELECT.

La clause DISTINCT

La clause DISTINCT permet d’éliminer le renvoie des doublons dans un résultat. Lorsqu’on ajoute à la commande principale SELECT la clause DISTINCT, on obtient des données non répétées ou des données toutes différentes. Dans les résultats retournés, chaque donnée est unique par contre avec la commande SELECT sans DISTINCT, une même donnée est renvoyée autant de fois qu’elle a été saisie dans une table.

La clause DISTINCT élimine toute donnée (ligne) sélectionnée deux ou plusieurs fois par la commande SELECT dans une ou plusieurs tables pour avoir des données toutes différentes, c’est-à-dire une liste d’éléments uniques.

La syntaxe : SELECT DISTINCT nom_attribut FROM nom_table;

On peut utiliser une requête avec la commande SELECT sans DISTINCT pour connaître le nombre total de valeurs présentes dans un ou plusieurs attributs d’une table. En outre lorsqu’on l’utilise dans une requête de la commande SELECT accompagnée de la clause DISTINCT, on détermine le nombre de valeurs différentes présentes dans un ou plusieurs attributs d’une table.

Pour constater ces différences, nous allons utiliser la table employee de notre base de données Person. Dans cette table on a enregistré deux fois le nom d’une personne par exemple « Jones Smith ».

id_employeelast_namefirst_namesalaryid_customer
 1JonesSmith12001
 2JackHarry60303
3WilliamJames70052
4MichaelOliver35001
5JonesSmith12001

Table employee

 

 

 

 

Utilisation de la commande SELECT sans la clause DISTINCT

On affiche tous les noms et prénoms des personnes présentes dans cette table par une requête de la commande SELECT sans ajouter la clause DISTINCT.

SELECT last_name, first_name  FROM employee ;

Le resultat :

 

last_namefirst_name
JonesSmith
JackHarry
WilliamJames
MichaelOliver
JonesSmith

 

Dans ce résultat renvoyé on voit le nom de « Jones Smith » qui s’est répété deux fois. Toutes les lignes (valeurs) de l’attribut last_name et celles de l’attribut first_name sont concernées. On a affiché tous les enregistrements des noms des personnes sans tenir compte des noms qui ont été répétés.

Donc dans une situation où on veut éviter ce genre phénomène (résultats avec des doublons), on ajoute alors à la commande SELECT la clause DISTINCT. On obtient une syntaxe suivante :

            Utilisation de la commande SELECT avec la clause DISTINCT

On affiche tous les différents noms et prénoms de toutes les personnes présentes dans notre table  avec SELECT ajouté DISTINCT.

SELECT DISTINCT last_name, first_name  FROM employee ;

Le résultat :

last_namefirst_name
JonesSmith
JackHarry
WilliamJames
MichaelOliver

 

Dans la réponse de cette requête, il n y a plus de nom répété. Les lignes qui contiennent les mêmes valeurs au niveau des attributs concernés last_name et  first_name  ont été prises en compte une seule fois. Le nom de la personne « Jones Smith » qui existe deux fois dans notre table est renvoyé qu’une seule fois dans le résultat.

Conclusion

La clause DISTINCT permet d’afficher les différentes valeurs des attributs d’une table. Elle a pour action la comparaison des valeurs des lignes d’un attribut ou d’une table. Avec la commande SELECT sans DISTINCT, on peut aboutir à des résultats qui contiennent certaines informations répétées à un certain nombre de fois selon le nombre de fois que ces informations ont été saisies dans un gestionnaire de base de données.