Requête qui fonctionne mais ne donne pas le résultat attendu ?
Bonjour,
Je voudrais récupérer le nombre d'interventions de chaque personnel entre le 01/01/2010 à 00:00:00 et le 31/12/2010 à 23:59:59.
Voici ma requête :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
SELECT
CONCAT(b.prenom,' ',b.nom) AS nom,
COUNT(b.id) AS compteur
FROM
`interventions_personnels` a,
`personnels` b,
`interventions` c
WHERE
c.horaire_declenchement BETWEEN '2010-01-01 00:00:00' AND '2010-12-31 23:59:59'
AND
a.personnel=b.id
GROUP BY b.id
ORDER BY compteur DESC, nom ASC |
Ci-dessous, les structures de mes tables :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
CREATE TABLE IF NOT EXISTS `interventions` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`numero_alerte` varchar(12) NOT NULL,
`horaire_declenchement` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`horaire_dc` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`duree` time NOT NULL,
`type` int(11) NOT NULL,
`vehicule` int(11) NOT NULL,
`conducteur` int(11) NOT NULL,
`voie` int(11) NOT NULL,
`commune` int(11) NOT NULL,
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;
CREATE TABLE IF NOT EXISTS `interventions_personnels` (
`intervention` int(11) NOT NULL,
`personnel` int(11) NOT NULL,
PRIMARY KEY (`intervention`,`personnel`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `personnels` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nom` varchar(45) NOT NULL,
`prenom` varchar(45) NOT NULL,
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=0; |
J'ai un résultat pour "compteur" qui est multiplié par le nombre total d'interventions, comme par exemple, Monsieur DUPONT qui a compteur=4 interventions alors qu'il n'en a qu'une seule. Et il y a en tout 4 interventions dans la base de données.
J'imagine que j'ai oublié un paramètre dans ma requête mais je ne sais pas lequel...
Merci pour votre aide,
ZiP