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 dans une requête


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Points : 47
    Points
    47
    Par défaut compter dans une requête
    bonsoir
    dans un enregistrement j'ai plusieurs champs qui sont des listes déroulantes avec A,B,C,D,E, l'utilisateur choisi sa lettre dans chaque champs et enregistre

    je souhaite maintenant compter les A, compter les B, etc.

    comment écrire ma requête

    LJ

  2. #2
    Membre expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2012
    Messages
    612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 612
    Points : 3 066
    Points
    3 066
    Par défaut
    Bonjour,

    Donnez nous la structure de la table, un jeu de données et le résultat attendu, parce que là ce n'est pas très clair.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Points : 47
    Points
    47
    Par défaut
    ok
    un enregistrement avec son nom et son id possède plusieurs champs qui se nomment Niveau1 Niveau 2 Niveau3 ...
    l'utilisateur se positionne pour chaque niveau par un choix A B C ou D

    dans cet enregistrement (donc en ligne dans ma bd) avec 10 niveaux, je souhaite compter le nbr de A, de B, de C ...

    je sais pas si c plus clair ...

    LJ

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Donnez le résultat complet des requêtes SHOW CREATE TABLE nom_de_la_table sur les tables concernées.

    Ça nous donnera la structure demandée par FSiebert. Ce sera plus facile ensuite de vous répondre.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Points : 47
    Points
    47
    Par défaut
    voici le code de création de ma bd pour un composant Joomla

    Code : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    CREATE TABLE IF NOT EXISTS `#__climatpratic` (
    	`id` int(11) NOT NULL auto_increment,
    	`params` text NOT NULL DEFAULT '',
    	`author` INT(11) ,
    	`publish` TINYINT DEFAULT 0 ,
    	`creation_date` DATE ,
    	`year` INT(11) NOT NULL DEFAULT 2012 ,
    	`strategie` VARCHAR(255) NOT NULL ,
    	`level_1` VARCHAR(255) ,
    	`level_2` VARCHAR(255) ,
    	`level_3` VARCHAR(255) ,
    	`level_4` VARCHAR(255) ,
    	`level_5` VARCHAR(255) ,
    	`level_6` VARCHAR(255) ,
    	`level_7` VARCHAR(255) ,
    	`level_8` VARCHAR(255) ,
    	`level_9` VARCHAR(255) ,
    	`level_10` VARCHAR(255) ,
    	`level_11` VARCHAR(255) ,
    	`level_12` VARCHAR(255) ,
    	`level_13` VARCHAR(255) ,
    	`level_14` VARCHAR(255) ,
    	`level_15` VARCHAR(255) ,
    	`level_16` VARCHAR(255) ,
    	`level_17` VARCHAR(255) ,
    	`level_18` VARCHAR(255) ,
    	`level_19` VARCHAR(255) ,
    	`level_20` VARCHAR(255) ,
    	`responsable` VARCHAR(255) ,
     
    	PRIMARY KEY  (`id`)
    );
    pour chaque level la réponse est une liste déroulante A B C D ou E

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Points : 47
    Points
    47
    Par défaut
    peut être pour débuter ma requête comment compter le nombre de champs saisi dans un enregistrement ...
    LJ

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Peut-être que tu n'y es pour rien parce qu'il s'agit d'un composant Joomla mais la structure de données est pourrie !

    dans cet enregistrement (donc en ligne dans ma bd) avec 10 niveaux, je souhaite compter le nbr de A, de B, de C ...
    Tu veux dire que tu veux compter combien il y a de chaque lettre dans chaque ligne de la table ou combien il y en a dans l'ensemble de la table ?

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Points : 47
    Points
    47
    Par défaut
    combien il y a de chaque lettre dans chaque ligne de la table
    Lj

  9. #9
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    C'est donc le cas le plus chiant compte tenu de la structure de données que vous avez qui, je le répète, n'est pas bonne du tout !

    Voici une solution pour un level :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT id,
    	if(level_1 = 'A', 1, 0) +
    		if(level_2 = 'A', 1, 0) +
    		if(level_3 = 'A', 1, 0) +
    		-- ainsi de suite jusqu'à
    		if(level_20 = 'A', 1, 0)
    	AS nb_de_A
    FROM #__climatpratic
    Chiant non ?

    Alors qu'avec cette structure :
    Code : 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
    17
    18
    19
    CREATE TABLE IF NOT EXISTS `#__climatpratic` (
    	`id` int(11) NOT NULL AUTO_INCREMENT,
    	`params` text NOT NULL DEFAULT '',
    	`author` INT(11) ,
    	`publish` TINYINT DEFAULT 0 ,
    	`creation_date` DATE ,
    	`year` INT(11) NOT NULL DEFAULT 2012 ,
    	`strategie` VARCHAR(255) NOT NULL ,
    	`responsable` VARCHAR(255) ,
    	PRIMARY KEY  (`id`)
    );
     
    CREATE TABLE climapratic_level
    (
    	cl_id_climapratic int(11) NOT NULL,
    	cl_num_level smallint NOT NULL,
    	cl_value CHAR(1) NOT NULL,
    	PRIMARY KEY (cl_id_climapratic, cl_num_level)
    )
    On peut plus simplement faire cette requête en calculant tout d'un coup :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT c.id,
    	SUM(if(cl.clvalue = 'A', 1, 0)) AS nb_A,
    	SUM(if(cl.clvalue = 'B', 1, 0)) AS nb_B,
    	SUM(if(cl.clvalue = 'C', 1, 0)) AS nb_C,
    	SUM(if(cl.clvalue = 'D', 1, 0)) AS nb_D,
    	SUM(if(cl.clvalue = 'E', 1, 0)) AS nb_E
    FROM `#__climatpratic` c
    INNER JOIN climapratic_level cl ON cl.cl_id_climapratic = c.id
    GROUP BY c.id

  10. #10
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Points : 47
    Points
    47
    Par défaut
    merci ej vais tester
    est-ce que tu peux me dire à corresponde les 0 et 1 dans
    IF(level_2 = 'A', 1, 0)

    LJ

  11. #11
    Membre expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2012
    Messages
    612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 612
    Points : 3 066
    Points
    3 066
    Par défaut
    C'est simplement pour compter : si c'est un A on ajoute 1, sinon on ajoute 0 (rien donc). On fait ce test pour chaque colonne et on additionne, on aura donc le nombre de A sur l'ensemble des colonnes.
    Et ensuite il faut refaire ça pour les autres lettres

    En résumé, comme l'a dit CinePhil, changez votre structure

  12. #12
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Points : 47
    Points
    47
    Par défaut
    ok merci

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/11/2008, 09h43
  2. Compter avec condition dans une requête
    Par CHINAILLON dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 10/04/2008, 14h50
  3. Compter les Dates différentes dans une requête Access
    Par maxireus dans le forum Modélisation
    Réponses: 2
    Dernier message: 11/05/2007, 00h02
  4. [SQL] compter les éléments distincts dans une requête
    Par redwire dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 08/10/2006, 17h44
  5. Compter dans une requête Analyse Croisée
    Par jeanchcom dans le forum Access
    Réponses: 14
    Dernier message: 26/09/2006, 08h14

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