Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/12/2010, 17h50   #1
Nouveau Membre du Club
 
Femme Patricia
Presque retraitée
Inscription : septembre 2008
Messages : 55
Détails du profil
Informations personnelles :
Nom : Femme Patricia
Âge : 60
Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Presque retraitée
Secteur : Biens de consommation

Informations forums :
Inscription : septembre 2008
Messages : 55
Points : 27
Points : 27
Par défaut Compter le nombre de valeurs identiques par ligne d'une table

Bonjour,

Bien que j'ai fait de gros progrès en ce qui concerne mysql, je sèche sur une requête qui est peut-être très simple...

J'ai une table comportant les champs :
n° nouvelle ; age ;classe ; titre ; jure1 ; jure2 ; jure3 ; jure4 ; jure5 ; jure6 ; jure7 ; jure8 ; jure9 ; jure10 ; jure11 ;

Je vous détaille cette table (au cas où cela puisse aider à bien comprendre ma question située en fin de ce message) :
- n° de nouvelle : ce n° sera entré dans la table au fur et à mesure de la réception des nouvelles dont les numéros ont été attribués lors de l'inscription du participant, donc sans ordre dans la numérotation ;
- age : il sera pris en compte pour déterminer dans quelle classe la nouvelle participera ;
- classe : 2 différentes (ado et adultes) ;
- titre : le titre de la nouvelle ;
- jure1, jure2, etc : chacun des 11 jurés aura son n° et notera toujours sous ce même numéro. Toutes les notes ne seront pas entrées en même temps, car elles le seront par les jurés eux-mêmes au moment où ils le décideront. En attendant l'entrée des notes, un 0 occupe les champs jure1, jure2, etc.

J'ai fait une page de résultats qui donnera le total des notes obtenues pour chaque nouvelle, mais j'aimerais pouvoir préciser, pour chacunes d'elles, le nombre de jurés qui ne les ont pas encore notées.
Ce qui revient à compter le nombre de 0 présents dans chaque ligne, mais uniquement dans certaines colonnes : jure1, jure2, etc.

Et c'est là que je bloque depuis 3 jours...

J'espère que je mes explications sont claires et je vous remercie de votre aide.
patriciaprovence est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 22h48   #2
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Bonjour,

tu peux passer par un case :

Code sql :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
SELECT id_nouvelle, SUM(
(CASE WHEN jure1=0 THEN 1 ELSE 0 END) + 
(CASE WHEN jure2=0 THEN 1 ELSE 0 END) + 
(CASE WHEN jure3=0 THEN 1 ELSE 0 END) + 
(CASE WHEN jure4=0 THEN 1 ELSE 0 END) + 
(CASE WHEN jure5=0 THEN 1 ELSE 0 END) + 
(CASE WHEN jure6=0 THEN 1 ELSE 0 END) + 
(CASE WHEN jure7=0 THEN 1 ELSE 0 END) + 
(CASE WHEN jure8=0 THEN 1 ELSE 0 END) + 
(CASE WHEN jure9=0 THEN 1 ELSE 0 END) + 
(CASE WHEN jure10=0 THEN 1 ELSE 0 END) + 
(CASE WHEN jure11=0 THEN 1 ELSE 0 END) 
) AS note
FROM TABLE
GROUP BY id_nouvelle
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2010, 14h43   #3
Nouveau Membre du Club
 
Femme Patricia
Presque retraitée
Inscription : septembre 2008
Messages : 55
Détails du profil
Informations personnelles :
Nom : Femme Patricia
Âge : 60
Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Presque retraitée
Secteur : Biens de consommation

Informations forums :
Inscription : septembre 2008
Messages : 55
Points : 27
Points : 27
Un grand merci !

C'est vrai qu'utiliser un CASE ne me vient jamais à l'esprit...
patriciaprovence est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2010, 18h42   #4
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 528
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 528
Points : 3 519
Points : 3 519
Saluton,
En fait, si la base de données était en formes normales, ce genre de demande pourrait être satisfait bien plus simplement.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2010, 13h21   #5
Nouveau Membre du Club
 
Femme Patricia
Presque retraitée
Inscription : septembre 2008
Messages : 55
Détails du profil
Informations personnelles :
Nom : Femme Patricia
Âge : 60
Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Presque retraitée
Secteur : Biens de consommation

Informations forums :
Inscription : septembre 2008
Messages : 55
Points : 27
Points : 27
Bonjour,

Citation:
Envoyé par Maljuna Kris Voir le message
Saluton,
En fait, si la base de données était en formes normales, ce genre de demande pourrait être satisfait bien plus simplement.
Et comment aurais-je dû faire sachant que les personnes qui vont noter sont vraiment "basiques" en ce qui concerne l'informatique et qu'il faut leur mâcher le travail ? Quand je parle de mâcher, cela veut dire qu'elles ne doivent pas avoir à entrer :

- ni leur numéro de juré ;
- ni le numéro de la nouvelle ;
- ni la catégorie dans laquelle concourt la nouvelle.

Ils accèderont au module de notation via un login et un mot de passe et n'auront qu'à choisir dans un menu déroulant les N° et titre de la nouvelle qu'ils voudront noter ou ceux de la nouvelle dont ils voudront modifier la note.

Mais à part cela, ils veulent pouvoir consulter à tout moment :
- le total des points obtenus pour chaque nouvelle, dans chacune des deux catégories avec précision du nombre de votants ;
- le classement des nouvelles, du premier au dernier, dans chacune des deux catégories ;
- le détail des notes mises par les autres jurés, dans chacune des deux catégories.

J'avais procédé autrement pour le précédent concours, les laissant entrer le numéro de la nouvelle et la note et ils ont fait tellement d'erreurs en entrant le numéro de la nouvelle que j'ai passé deux jours à reprendre manuellement ma table...
Donc, cette année, j'ai simplifié : j'entre les numéros de nouvelles, la catégorie, l'age du concurrent et le titre et je mets un 0 dans jure1, jure2, etc. De cette façon, lorsqu'ils entrent leur note, ile ne font, en définitive, que modifier celle que j'ai déjà placée. Le seul problème que j'avais était de savoir combien de jurés n'avaient pas voté, et pour cela il me fallait pouvoir compter le nombre de zéros dans les colonnes jure...

Maintenant s'il y a plus simple, je suis preneuse...
patriciaprovence est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2010, 16h35   #6
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 528
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 528
Points : 3 519
Points : 3 519
La problématique de l'IHM ne doit pas interférer avec la modélisation des données.
La construction et la présentation du formulaire aux utilisateurs puis son traitement pour alimenter la base de données doivent permettre de gérer ces deux impératifs :
-mâcher le travail de saisie
-respecter l'intégrité du système d'information.
Je ne vois là rien que de très basique, en somme.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2010, 18h27   #7
Nouveau Membre du Club
 
Femme Patricia
Presque retraitée
Inscription : septembre 2008
Messages : 55
Détails du profil
Informations personnelles :
Nom : Femme Patricia
Âge : 60
Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Presque retraitée
Secteur : Biens de consommation

Informations forums :
Inscription : septembre 2008
Messages : 55
Points : 27
Points : 27
Simplifier le travail des personnes qui utiliseront ce que j'ai appelé un "module de notation" est ce que j'ai fait, du moins je l'espère, mais je n'ai pas votre réponse à la question que je vous ai posée après ce post :
Citation:
Envoyé par Maljuna Kris Voir le message
En fait, si la base de données était en formes normales, ce genre de demande pourrait être satisfait bien plus simplement.
Cette question était : "Et comment aurais-je dû faire..."
Et j'ajouterai : qu'est ce qui vous indique, simplement en voyant les champs qui constituent l'une des tables de ma base de données que celle-ci n'était pas (et je reprends vos termes) "en formes normales" ?

Je ne suis qu'une "amateuse" qui a appris seule le peu que je sais sur le php et le mysql et qui fait un travail bénévole pour les organisateurs d'un concours de nouvelles.
C'est en pratiquant et en faisant appel à l'aide des autres, lorsque je n'arrive pas à trouver seule la solution après plusieurs jours d'essais, que j'en apprends un peu plus, donc votre réponse à mes questions ne pourra que m'être bénéfique...
patriciaprovence est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2010, 19h50   #8
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Bonjour,

sur ce tuto partie "formes normales" il y a des exemples concert de modélisations clairement expliqués.
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2010, 09h26   #9
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 528
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 528
Points : 3 519
Points : 3 519
Bien que je sente un peu d'agacement dans tes propos, voire davantage , je vais t'orienter vers ce à quoi aurait du ressembler la modélisation de ces données :
une table jure {id,pseudo, mdp}
une table nouvelle{n° nouvelle ; age ;classe ; titre }
et une table vote {id_nouvelle,id_jure,note} dans laquelle les colonnes id_nouvelle et id_jure sont des clés étrangères (foreign keys) constituant une clé primaire (donc UNIQUE) composée.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h01.


 
 
 
 
Partenaires

Hébergement Web