Bonjour
J'ai une table qui stocke des téléchargements de fichiers (un téléchargement = un enregistrement). Cette table enregistre 4 informations : l'id du téléchargement (AUTO INCREMENT), l'id du fichier téléchargé, la date du téléchargement et l'IP du téléchargeur :
J'ai écrit une petite requête SQL qui me permet de voir le nombre total de téléchargements par jour :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 CREATE TABLE IF NOT EXISTS `exp_dl` ( `dl_id` int(11) NOT NULL AUTO_INCREMENT, `dl_item_id` int(11) DEFAULT NULL, `dl_date` date NOT NULL, `dl_ip` varchar(50) DEFAULT NULL, PRIMARY KEY (`dl_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; INSERT INTO `exp_dl` (`dl_id`, `dl_item_id`, `dl_date`, `dl_ip`) VALUES (1, 7, '2012-01-22', '127.0.0.1'), (2, 17, '2012-01-23', '127.0.0.1'), (3, 6, '2012-01-24', '127.0.0.1'), (4, 9, '2012-01-24', '192.168.1.2'), (5, 4, '2012-01-24', '192.168.1.2'), (6, 10, '2012-01-25', '127.0.0.1'), (7, 5, '2012-01-25', '127.0.0.1'), (8, 8, '2012-01-25', '127.0.0.1'), (9, 24, '2012-01-25', '192.168.1.2'), (10, 14, '2012-01-25', '90.150.10.30'), (11, 17, '2012-01-25', '90.150.10.30');
Jusque là tout va bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 SELECT dl_date, COUNT(dl_id) AS nb_dl FROM exp_dl GROUP BY dl_date /* Resultat : dl_date nb_dl 2012-01-22 1 2012-01-23 1 2012-01-24 3 2012-01-25 6 */
Maintenant, j'aimerais écrire une seconde requête qui ignore les doublons sur le champ IP (le but étant d'avoir le nombre de téléchargeurs par jour, et pas le nombre de téléchargements par jour).
Cette requête devrait retourner ceci :
Je ne vois pas comment faire pour "restreindre" le GROUP BY en fonction du champ IP, pour chaque date.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 /* Resultat : dl_date nb_dl 2012-01-22 1 2012-01-23 1 2012-01-24 2 2012-01-25 3 */
Merci pour votre aide.
Partager