![]() ![]() |
|
![]() ![]() ![]() ![]() |
|
![]() |
![]() 8.4.3.8 Compter les lignesLes bases de données sont souvent utilisées pour répondre aux questions du type : ``combien de fois une information est-elle enregistrée dans une table?''. Par exemple, vous pouvez souhaiter connaître le nombre d'animaux que vous avez, ou le nombre d'animaux de chaque propriétaire, ou encore toutes sortes de statistiques sur les animaux.
Pour compter le nombre total d'animaux que vous avez, il suffit de compter le nombre de ligne dans la table mysql> SELECT COUNT(*) FROM animaux; +----------+ | COUNT(*) | +----------+ | 9 | +----------+
Précédemment, vous avez recherché les noms des propriétaires d'animaux. Vous pouvez utiliser la fonction mysql> SELECT proprietaire, COUNT(*) FROM animaux GROUP BY proprietaire; +---------------+----------+ | proprietaire | COUNT(*) | +---------------+----------+ | Benny | 2 | | Diane | 2 | | Gwen | 3 | | Harold | 2 | +---------------+----------+
Remarques: l'utilisation de la clause mysql> SELECT proprietaire, COUNT(proprietaire) 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
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 genre: mysql> SELECT genre, COUNT(*) FROM animaux GROUP BY genre; +-------+----------+ | genre | COUNT(*) | +-------+----------+ | NULL | 1 | | f | 4 | | m | 4 | +-------+----------+
(Dans cette réponse, Nombre d'animaux par espece et genre: mysql> SELECT espece, genre, COUNT(*) FROM animaux GROUP BY espece, genre; +---------+-------+----------+ | espece | genre | 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 | +---------+-------+----------+
Il n'y a pas besoin d'utiliser la table entière avec la fonction mysql> SELECT espece, genre, COUNT(*) FROM animaux -> WHERE espece = "chien" OR espece = "chat" -> GROUP BY espece, genre; +---------+-------+----------+ | espece | genre | COUNT(*) | +---------+-------+----------+ | chat | f | 1 | | chat | m | 1 | | chien | f | 1 | | chien | m | 2 | +---------+-------+----------+ Ou, pour avoir le nombre d'animaux par genre, et pour les espèces connues : mysql> SELECT espece, genre, COUNT(*) FROM animaux -> WHERE genre IS NOT NULL -> GROUP BY espece, genre; +---------+-------+----------+ | espece | genre | COUNT(*) | +---------+-------+----------+ | oiseau | f | 1 | | chat | f | 1 | | chat | m | 1 | | chien | f | 1 | | chien | m | 2 | | hamster | f | 1 | | serpent | m | 1 | +---------+-------+----------+ |