IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Compter le nombre de valeurs identiques par ligne d'une table


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Femme Profil pro
    Presque retraitée
    Inscrit en
    Septembre 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    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 : 75
    Points : 66
    Points
    66
    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.

  2. #2
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Bonjour,

    tu peux passer par un case :

    Code sql : 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
     
    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

  3. #3
    Membre du Club
    Femme Profil pro
    Presque retraitée
    Inscrit en
    Septembre 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    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 : 75
    Points : 66
    Points
    66
    Par défaut
    Un grand merci !

    C'est vrai qu'utiliser un CASE ne me vient jamais à l'esprit...

  4. #4
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    En fait, si la base de données était en formes normales, ce genre de demande pourrait être satisfait bien plus simplement.

  5. #5
    Membre du Club
    Femme Profil pro
    Presque retraitée
    Inscrit en
    Septembre 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    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 : 75
    Points : 66
    Points
    66
    Par défaut
    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...

  6. #6
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    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.

  7. #7
    Membre du Club
    Femme Profil pro
    Presque retraitée
    Inscrit en
    Septembre 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    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 : 75
    Points : 66
    Points
    66
    Par défaut
    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...

  8. #8
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Bonjour,

    sur ce tuto partie "formes normales" il y a des exemples concert de modélisations clairement expliqués.

  9. #9
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. nombre de valeurs variable par ligne d'un fichier texte
    Par Christinita dans le forum MATLAB
    Réponses: 3
    Dernier message: 15/02/2012, 22h05
  2. [XL-2010] Compter le nombre de valeurs identiques sur une feuille
    Par Yepazix dans le forum Excel
    Réponses: 5
    Dernier message: 10/07/2011, 00h26
  3. [XL-2010] Comment compter le nombre de valeur identique dans un sheet.
    Par zoltix dans le forum Excel
    Réponses: 4
    Dernier message: 23/04/2011, 23h06
  4. [WD-2003] Compter le nombre de valeurs identiques dans un tableau word
    Par borocam dans le forum VBA Word
    Réponses: 4
    Dernier message: 20/01/2010, 18h19
  5. [MySQL] Compter le nombre de valeurs identiques dans une colonne d'une table
    Par luca120 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/12/2009, 00h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo