je travaille actuellement sur un système de statistiques effectués dans le cadre d'un module web.
Une table erreurs permets de stocker des erreurs effectués sur des commandes.
une table erreurs_stats permets de stocker par erreurs les initiales par zone de préparation, voici ma table erreurs_stats
CREATE TABLE `erreurs_stats` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`zone1` varchar(255) NOT NULL,
`zone2` varchar(255) NOT NULL,
`zone3` varchar(255) NOT NULL,
`erreurs_id` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
Voici deux entrées de ma table erreurs_stats que j'avais inséré pour effectuer des tests:
id zone1 zone2 zone3 erreurs_id
1 Ben Patrick Brigitte 102
2 Natacha Ben Marie 105
j'aimerai maintenant afficher le nombre d'erreurs par initiales comme ceci:
Ben: 2
Patrick: 1
Brigitte: 1
Natacha: 1
Marie: 1
Voici ma requête:
SELECT DISTINCT zone1, zone2, zone3, count(erreurs_id) as compteur FROM erreurs_stats GROUP BY zone1, zone2, zone3
Au final j'ai deux lignes & j'ai "Ben" qui apparait deux fois :s.
Je fais appel à votre pour savoir si vous avez décider comment trier ces données pour ne pas avoir de redondance d'initiales. Au final ces données seront afficher en php.
Salut,
Ton modèle est faux...
Tu es complètement dénormalisé, et tu vas au devant de problèmes de gestion.
Ta table devrait avoir simplement un id, un nom (un seul!!), et un code d'erreur.
et tes enregistrements du type:
1;Ben;102
2;Patrick;102
3;Brigitte;102
4;Natacha;103
5;Ben;103
etc etc..
Et ta requète se simplifiera énormément:
select nom,count(*) from 'erreurs_stats' group by nom
Tri de résultats d'une requête
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.