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

Langage SQL Discussion :

mysql comptage conditionel


Sujet :

Langage SQL

  1. #1
    Membre du Club Avatar de vovor
    Inscrit en
    Avril 2005
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 119
    Points : 59
    Points
    59
    Par défaut mysql comptage conditionel
    Bonjour,

    J'ai un peu de mal à créer une requête. Peut être aurez vous l'idée que je n'ai pas eu.
    Je vais simplifier mon problème par un exemple.

    J'ai une salle de 10 places. J'ai une table qui, chaque jour, donne un id_participant :
    Elle était structurée ainsi :
    ID,ID_SALLE, DATE,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10

    J'avais des lignes :
    14535, 3, une_date_timestamp, 53, 12, 43, 65, 1, 45, 35, 68, 72, 11

    Jusqu'à présent, cette table me rendait facilement ce que je voulais, à savoir qui était assis tel jour et à telle place.

    Sauf que maintenant il me faut compter combien de fois s'est assis un utilisateur à telle et telle place, afin d'en sortir une statistique.

    un "SELECT count(P1), ...count(P10) FROM ma_table WHERE P1=mon_participant OR.... P10=mon_participant" me compte les lignes.
    Aucun interêt pour moi

    Merci

  2. #2
    Membre du Club Avatar de vovor
    Inscrit en
    Avril 2005
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 119
    Points : 59
    Points
    59
    Par défaut
    1. Erreur de forum (comme d'hab ceci dit )

    2. Résolu avec un SUM(IS TRUE)

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 091
    Points : 28 362
    Points
    28 362
    Par défaut
    Si la structure de la table avait été normalisée, ce serait plus facile...
    Comme ça par exemple (à noter que DATE étant un mot réservé ne peut être utilisé pour nommer une colonne)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE participation
        (    id_salle        NUMBER
        ,    id_jour         TIMESTAMP
        ,    id_place        NUMBER
        ,    id_participant  NUMBER
        )
    Une telle structure à aussi l'avantage de pouvoir prendre en charge des salles de taille variable.

    Partant de votre table existante, nous allons créer une vue pour la normaliser :
    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 VIEW participation
    AS  SELECT  id_salle
            ,   "date"  AS id_jour
            ,   1       AS id_place
            ,   p1      AS id_participant
        FROM    matable
    UNION ALL
        SELECT  id_salle
            ,   "date"  AS id_jour
            ,   2       AS id_place
            ,   p2      AS id_participant
        FROM    matable
    ...
    UNION ALL
        SELECT  id_salle
            ,   "date"  AS id_jour
            ,   10      AS id_place
            ,   p10     AS id_participant
        FROM    matable
    Pour connaître le nombre de fois qu'un participant s'est assis à une place, la requête devient plus facile:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT  id_participant
        ,   id_salle
        ,   id_place
        ,   COUNT(*)    AS compte
    FROM    participation
    GROUP BY id_participant
        ,   id_salle
        ,   id_place
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

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

Discussions similaires

  1. [MySQL] Mysql - Comptage d'enregistrements à la volée selon des critères
    Par hadrien78 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 20/04/2012, 12h34
  2. requete mysql + comptage
    Par mathieu3392 dans le forum Requêtes
    Réponses: 0
    Dernier message: 21/04/2009, 15h25
  3. [MySQL] Requete de comptage
    Par olivgiov dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/02/2006, 17h49
  4. [MySql] Problème de comptage
    Par Oberown dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/02/2006, 05h44
  5. [C#/MySQL] Requete conditionelle
    Par vincent.e dans le forum Requêtes
    Réponses: 2
    Dernier message: 27/12/2005, 17h51

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