|
Chapitre 15 :
le comptage et l'élimination des doublons |
|
|
1 - Introduction |
|
||||||||||||||||||||||
|
|
|
Nous
poursuivons notre étude du regroupement (commencée au chapitre précédent)
dans le cas particulier où la fonction utilisée est "Compte". Cette
fonction n'effectue pas d'opération ; comme son nom l'indique, elle
fournit le nombre d'enregistrements regroupés, dans la colonne où on lui
demande d'opérer. |
|
|||||||||||||||||||||
|
|
|
Pour
créer des exemples de requête, nous utilisons la table du chapitre précédent,
dans laquelle nous avons supprimé une donnée (le chiffre d'affaires de
l'agence Est pour la journée du 7 janvier 2003 n'a pas été
communiqué au siège de l'entreprise -- quelqu'un va se faire tirer les
oreilles). La table est représentée ci-dessous. |
|
|||||||||||||||||||||
|
|
||||||||||||||||||||||||
|
||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
|
|
|
Comme
pour les autres chapitres de ce tutoriel (ou tutorial, ou cours en ligne),
nous utilisons le SGBD Access comme support technique. |
|
|||||||||||||||||||||
|
|
||||||||||||||||||||||||
|
|
2 - Le regroupement avec comptage |
|
|||||||
|
|
|
Nous
créons une requête dans laquelle : |
|
||||||
|
|
|
|
|
||||||
|
|
|
Les
deux figures ci-dessous représentent la requête de regroupement (à gauche),
et la feuille de données résultante (à droite). |
|
||||||
|
|
|||||||||
|
|
|||||||||
|
|
|
Nous
remarquons immédiatement que la fonction "Compte" ne prend pas en
compte les enregistrements vides. Il est d'usage de dire que la fonction
"Compte" ignore les "Null". |
|
||||||
|
|
|||||||||
|
|
3 - Le comptage des doublons |
|
|
|
|
|
Nous
pouvons appliquer la fonction "Compte" au champ de regroupement
lui-même. Dans le cas du champ "Date", les deux figures ci-dessous
représentent la requête de regroupement (à gauche), et la feuille de données résultante (à droite). |
|
|
|
|||
|
|
|||
|
|
|||
|
|
|
Nous
disposons ainsi d'un moyen de compter les doublons -- à condition
d'admettre qu'une valeur qui n'apparaît qu'une seule fois (et sera comptée
comme telle) fait partie des doublons. Si nous prenons le terme "doublon"
au sens strict, nous devons rajouter, dans la colonne de comptage, sur la
ligne "Critères :", un filtre qui ne conserve que les valeurs
supérieures à l'unité (>1). Nous reconnaissons au passage un exemple de
filtrage après regroupement. |
|
|
|
|
Le
SGBD Access possède un assistant de comptage des doublons, et il est
instructif de regarder comment il fonctionne. Dans la fenêtre "Base de
données", nous sélectionnons l'objet "Requêtes", nous cliquons
sur l'icône |
|
|
|
|||
|
|
|||
|
|
|||
|
|
|
Surprise
! Le regroupement et le comptage sont bien effectués sur le même champ
"Date", mais le regroupement et l'affichage du champ sont
disjoints. Cette complication, qui apparaît comme inutile, trouverait-elle sa
source dans le désir d'assurer la compatibilité avec une ancienne version
d'Access, ou avec d'autres SGBD ? L'auteur de ces lignes donne sa langue
au chat. |
|
|
|
|||
|
|
4 - L'élimination des doublons |
|
|
|
|
|
De
la table qui nous sert d'exemple, extrayons une nouvelle table ne contenant
que la colonne "Agence". Cette table contient des doublons, puisque
toutes les agences y sont citées deux fois. Il suffit d'opérer une sélection
avec regroupement, mais sans comptage des doublons, pour éliminer les
doublons de la table. Le regroupement est une bonne technique de
dédoublonnage, que nous avons déjà utilisée au chapitre 11, pour un
exemple de doublons sur deux champs. |
|
|
|
|
La
table de départ, la requête et son résultat sont représentés ci-dessous. |
|
|
|
|||
|
|
|||
|
|
|||
|
|
|
Soyons
concis : pour dédoublonner, il suffit de regrouper sans compter. |
|
|
|
|||
|
|
5 - Le comptage sans regroupement |
|
||||||||||||||||
|
|
|
En
faisant exactement l'inverse, c'est à dire en comptant sans regrouper,
nous déterminons le nombre d'enregistrements (non Null) présents dans une ou
plusieurs colonnes. La figure ci-dessous représente la requête correspondante
(en haut) et la feuille de données résultante (en bas). Au passage, nous
vérifions que, dans la colonne CA, la fonction "Compte" a négligé
la case vide. |
|
|||||||||||||||
|
|
||||||||||||||||||
|
|
||||||||||||||||||
|
|
||||||||||||||||||
|
|
|
Nous
pouvons ainsi déterminer le nombre d'enregistrements d'une table, à
condition que nous soyons sûrs que la colonne utilisée pour l'opération ne
contient pas de case vide. Nous pouvons songer à utiliser une colonne dans
laquelle le Null est interdit, mais il n'en n'existe pas toujours. Pour nous
affranchir du comptage sur une colonne particulière, nous procédons comme
suit : |
|
|||||||||||||||
|
|
|
|
|
|||||||||||||||
|
|
|
Le
principe de l'opération est simple. Nous créons une requête sélection sans
introduire aucun des champs de la table sélectionnée. Nous demandons à cette
requête de créer un nouveau champ, auquel nous donnons un nom (indispensable
pour l'affichage). Nous définissons le contenu de ce nouveau champ à l'aide
la fonction "Compte()" qui compte des
lignes. Nous utilisons l'astérisque comme argument, de telle sorte que la
fonction compte les lignes de la table. La requête affiche une feuille de
données possédant une seule colonne (puisque nous l'avons définie ainsi), et
une seule ligne (puisque la fonction fournit une valeur unique). |
|
|||||||||||||||
|
|
|
Les
figures ci-dessous représentent la requête (à gauche) et la feuille de
données résultante (à droite). |
|
|||||||||||||||
|
|
||||||||||||||||||
|
|
||||||||||||||||||
|
|
||||||||||||||||||
|
|
|
Cette
méthode compte effectivement les lignes d'une table, même si elles sont
toutes vides. Vous pouvez faire l'expérience en effaçant tout ce que contient
la table "Résultats" (après en avoir gardé copie). |
|
|||||||||||||||
|
|
|
Remarque
: si nous remplaçons l'astérisque par le nom de l'un des champs de la table
"Résultats" (mis entre crochets pour respecter la syntaxe), nous
obtenons le résultat du paragraphe précédent, c'est à dire le comptage des
enregistrements (non vides) du champ considéré. |
|
|||||||||||||||
|
|
||||||||||||||||||
|
|
6 - Conclusion |
|
||||||||||||||||
|
|
|
Comme
vous pouvez le constater, cette page est pleine de ressources. Elle vous
montre comment : |
|
|||||||||||||||
|
|
|
|
|
|||||||||||||||
|
|
|
Le
comptage des doublons, et leur élimination, sont des techniques importantes à
connaître, car elles sont souvent utilisées pour la maintenance des bases de
données et l'interrogation de leur contenu. |
|
|||||||||||||||
|
|
||||||||||||||||||