Recherche de modèles
<<<
Compter les lignes Utiliser plus d'une table
>>>

3.3.4 Récupérer des informations à partir d'une table
3.3 Création et utilisation d'une base de données
3 Tutoriels d'introduction
 Manuel de Référence MySQL 4.1 : Version Française

Sélectionner toutes les données
Sélectionner des lignes particulières
Sélectionner des colonnes particulières
Trier les enregistrements
Calcul sur les Dates
Travailler avec la valeur NULL
Recherche de modèles
->Compter les lignes
Utiliser plus d'une table

3.3.4.8 Compter les lignes

Les bases de données sont souvent employées pour répondre à la question : ``Combien de fois un certain type de données se trouve dans la table ?'' Par exemple, vous aimeriez savoir combien d'animaux vous avez, ou bien combien d'animaux chaque propriétaire possède, ou encore savoir différentes choses concernant vos animaux.

Savoir combien vous avez d'animaux revient à se poser la question : ``Combien de lignes y a-t-il dans la table animaux ?'' parce qu'il y a un enregistrement par animaux. La fonction COUNT() compte le nombre de résultats non NULL , donc, la requête pour compter les animaux ressemble à ceci :

mysql> SELECT COUNT(*) FROM animaux;
+----------+
| COUNT(*) |
+----------+
|        9 |
+----------+
Vous pouvez trouver également les noms des propriétaires des animaux. Vous pouvez utiliser COUNT() si vous voulez trouver combien d'animaux possède chaque propriétaire :

mysql> SELECT maitre, COUNT(*) FROM animaux GROUP BY maitre;
+--------+----------+
| maitre | COUNT(*) |
+--------+----------+
| Benny  |        2 |
| Diane  |        2 |
| Gwen   |        3 |
| Harold |        2 |
+--------+----------+
Notez l'utilisation de la clause GROUP BY pour grouper tous les enregistrements par propriétaire. Sans cela, vous auriez le message d'erreur suivant :

mysql> SELECT maitre, COUNT(maitre) FROM animaux;
ERROR 1140 at line 1: Mixing of GROUP columns (MIN(),MAX(),COUNT()...)
with no GROUP columns is illegal if there is no GROUP BY clause
COUNT() et GROUP BY sont utiles pour caractériser vos données de diverses façons. Les exemples suivants montrent différentes manières pour obtenir des statistiques sur les animaux.Nombre d'animaux par espèce :

mysql> SELECT espece, COUNT(*) FROM animaux GROUP BY espece;
+---------+----------+
| espece  | COUNT(*) |
+---------+----------+
| oiseau  |        2 |
| chat    |        2 |
| chien   |        3 |
| hamster |        1 |
| serpent |        1 |
+---------+----------+
Nombre d'animaux par sexe :

mysql> SELECT sexe, COUNT(*) FROM animaux GROUP BY sexe;
+------+----------+
| sexe | COUNT(*) |
+------+----------+
| NULL |        1 |
| f    |        4 |
| m    |        4 |
+------+----------+
(Dans ce résultat, NULL indique les sexes inconnus.)

Nombre d'animaux par espèce et sexe :


mysql> SELECT espece, sexe, COUNT(*) FROM animaux GROUP BY espece, sexe;
+---------+------+----------+
| espece  | sexe | COUNT(*) |
+---------+------+----------+
| oiseau  | NULL |        1 |
| oiseau  | f    |        1 |
| chat    | f    |        1 |
| chat    | m    |        1 |
| chien   | f    |        1 |
| chien   | m    |        2 |
| hamster | f    |        1 |
| serpent | m    |        1 |
+---------+------+----------+
Vous n'avez pas besoin de rechercher une table entière quand vous employez COUNT() . Par exemple, la requête précédente, si vous voulez trouver uniquement les chiens et les chats, ressemble à cela :

mysql> SELECT espece, sexe, COUNT(*) FROM animaux
    -> WHERE espece = "chien" OR espece = "chat"
    -> GROUP BY espece, sexe;
+---------+------+----------+
| espece  | sexe | COUNT(*) |
+---------+------+----------+
| chat    | f    |        1 |
| chat    | m    |        1 |
| chien   | f    |        1 |
| chien   | m    |        2 |
+---------+------+----------+
Ou bien, si vous voulez trouver le nombre d'animaux par sexe, uniquement pour les animaux dont le sexe est connu :

mysql> SELECT espece, sexe, COUNT(*) FROM animaux
    -> WHERE sexe IS NOT NULL
    -> GROUP BY espece, sexe;
+---------+------+----------+
| espece  | sexe | COUNT(*) |
+---------+------+----------+
| oiseau  | f    |        1 |
| chat    | f    |        1 |
| chat    | m    |        1 |
| chien   | f    |        1 |
| chien   | m    |        2 |
| hamster | f    |        1 |
| serpent | m    |        1 |
+---------+------+----------+

<< Compter les lignes >>
Recherche de modèles Récupérer des informations à partir d'une table Utiliser plus d'une table