Page 1 sur 1
Double criteres pour le comptage
Posté : 29 sept. 2005, 08:18
par FAbrice
Bonjour,
J'ai cherché le moyen de conaitre le nombre de fois que j'avais un element dans ma table éléments et j'ai obtenu la requete suivante:
SELECT elements.Details, count(expertise.Element) as element, count(expertise.id)
FROM elements, expertise
WHERE elements.ID= expertise.Element and expertise.Element>1
GROUP BY expertise.Element
ORDER BY element DESC
J'ai fait de meme pour les défauts
SELECT defaut.Description, count(expertise.Defaut) as toto, count(expertise.id)
FROM defaut, expertise
WHERE defaut.ID= expertise.Defaut and expertise.Defaut>1
GROUP BY expertise.Defaut
ORDER BY toto DESC
Maintenant, je cherche comment faire pour avoir tous les defauts par équipements ainsi que le nombre de fois qu'ils apparaissent par equipement.
Comme ce n'est pas bien clair (du moins je pense

), voici un petiot exemple:
Equipement | Défaut | nbre 2 fois
--------------------------------------------
rouillée 33
Roue cassée 4
tordue 1
Arbre tordue 5
rayé 3
...
Je ne sais pas si vous arrivez a y comprendre quelque chose
Merci de votre réponse,
FAb
Posté : 29 sept. 2005, 09:27
par pjl
Utilise la fonction SQL SUM.
PS : c'est un problème de base de données, pas de PHP.
Posté : 29 sept. 2005, 09:51
par FAbrice
Alut,
je viens de consulter la doc Mysql mais je n'ai pas trouvé commen utiliser cette fonction( je pense d'ailleurs que g du mal regarder

)
Tu pourrais m'aider a utiliser cette fonction?
merci de ta réponse,
FAb
Posté : 29 sept. 2005, 09:58
par pjl
Posté : 29 sept. 2005, 13:37
par FAbrice
Salut,
Je ne vois pas comment la fonction somme va me permettre de trouver tous les defauts par equipement ainsi que le nombre de fois qu'ils apparaissent
Je crois que mon explication n'etait pas terrible!
Je dispose d'une table expertise dans laquelle j'enregistre toutes les données liées a l'expertise des equipements. dans cette table ne sont stockés que les ID des equipements et des defauts, qui se trouvent eux respectivement dans la table "equipements" et dans la table "défauts"
Pour le moment, mes requetes me permettent de connaitre le nombre de fois que je trouve un défaut et le nombre de fois qu'un element est concerné.
Je souhaiterai trouver un moyen de n'avoir qu'un seul tableau qui me donnerait le nombre de fois que je trouve un defaut et ce, pour chaque equipement.
J'espère que cette explication est meilleure que la premiere
merci de votre aide,
FAb
Posté : 29 sept. 2005, 13:45
par pjl
donne la structure de tes tables, un exemple de données et un exemple de résultat désiré.
Mais quand je lis nombre de fois et que le COUNT ne convient pas, pour moi, il ne reste que la somme des élèments.
Posté : 29 sept. 2005, 14:09
par FAbrice
Voici la structure des tables:
expertise:
`ID` tinyint(4) NOT NULL auto_increment,
`Numdossier` varchar(10) NOT NULL default '',
`Element` text NOT NULL,
`Defaut` text NOT NULL,
PRIMARY KEY (`ID`)
defaut:
`ID` tinyint(4) NOT NULL auto_increment,
`Description` text NOT NULL,
PRIMARY KEY (`ID`)
elements:
`ID` tinyint(4) NOT NULL auto_increment,
`Details` text NOT NULL,
PRIMARY KEY (`ID`)
Resultat souhaité:
Equipement | Défaut | nbre 2 fois
--------------------------------------------
....................rouillée ......33
Roue ............cassée ........4
....................tordue......... 1
- - - - - - - - - - - - - - - - - - - - - - - - -
Arbre........... tordue .........5
....................rayé ............3
- - - - - - - - - - - - - - - - - - - - - - - - -
...
Posté : 29 sept. 2005, 17:24
par pjl
Je ne comprends pas.
Dans le résultat souhaité, tu demandes un champ équipement qui ne figure pas dans tes tables.
Ensuite, dans ta table expertise, tu as un champ défaut au format texte et tu as une table défaut avec un champ description au format texte.
Quelle est la différence entre les 2 ?
Là, tu as 3 tables et aucune de ces tables ne comporte de clef étrangère pour la lier avec une des autres tables.
A priori, avant de voir les requêtes, je pense que tu dois revoir la conception de tes tables.
Et l'utilisation du format texte est à réservée pour du texte.
Pour un nom ou une courte description, tu as le varchar qui peut aller jusqu'à 255 caractères.
Dernier point, le tynint va jusqu'à 127 ou 255.
Es-tu certain que tu n'auras pas plus d'expertises ?
©phpdebutant.org
Posté : 29 sept. 2005, 19:06
par FAbrice
Ecxuse moi, mais g pris le nom des champs sur une veille version de mes tables
Voici les VRAI strucutres
Expertise:
ID/Numdossier/Element/Defaut/Commentaires
defaut:
ID/Description
Elements:
ID/Details
ecxuse moi encore,
FAb
Posté : 29 sept. 2005, 22:17
par pjl
et les formats des champs ?
Posté : 30 sept. 2005, 06:39
par FAbrice
ils sont tous en format texte (est ce que cela a une importance?) sauf pour le ID qui sont les clefs primaires
Posté : 30 sept. 2005, 10:03
par pjl
Un peu oui.
Du texte, c'est du texte, des chiffres ce sont des chiffres. Ce n'est pas tout à fait la même chose.
Et relis mon post précédent.
Posté : 30 sept. 2005, 10:38
par mere-teresa
Modération : Allez zou ! Un ptit coup de rangement du forum me fait déplacer ce post dans Base de données, où tous les spécialistes SQL vont.