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 :

requete de denombrement


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 63
    Par défaut requete de denombrement
    Bonjour,
    Je tourne en rond depuis hier sur le pb suivant:
    J'ai 2 tables:
    table 1: groupe(groupe)
    table 2: code_observe(id,code,groupe,periode)

    Je veux connaitre pour chaque groupe, le nombre de fois où le code apparait.
    Cela devrait ressembler à quelques chose comme cela:
    groupe1, code1, 3 fois
    gropue1, code2, 1 fois
    groupe1, code3, 2 fois

    groupe2, code1, 2 fois
    gropue2, code3, 5 fois
    groupe2, code5, 6 fois

    groupe3, code1, 3 fois
    gropue3, code5, 6 fois
    groupe3, code8, 3 fois

    La requête est surement toute simple mais je ne la trouve pas.
    Je joins mais 2 tables.
    Merci de votre aide.
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    -- phpMyAdmin SQL Dump
    -- version 3.0.1.1
    -- http://www.phpmyadmin.net
    --
    -- Serveur: localhost
    -- Généré le : Mer 17 Juin 2009 à 12:07
    -- Version du serveur: 5.1.30
    -- Version de PHP: 5.2.7
     
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
     
     
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
     
    --
    -- Base de données: `stagem1`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `code_observe`
    --
     
    CREATE TABLE `code_observe` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `code` varchar(10) NOT NULL,
      `groupe` varchar(10) NOT NULL,
      `periode` varchar(10) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=28 ;
     
    --
    -- Contenu de la table `code_observe`
    --
     
    INSERT INTO `code_observe` (`id`, `code`, `groupe`, `periode`) VALUES
    (1, 'hh', 'bleu', 'p1'),
    (2, 'hh', 'bleu', 'p2'),
    (3, 'hh', 'bleu', 'p3'),
    (4, 'jj', 'bleu', 'p4'),
    (5, 'mm', 'bleu', 'p6'),
    (6, 'mm', 'bleu', 'p7'),
    (7, 'll', 'bleu', 'p3'),
    (8, 'ff', 'bleu', 'p5'),
    (9, 'dd', 'bleu', 'p9'),
    (10, 'dd', 'bleu', 'p7'),
    (11, 'dd', 'vert', 'p5'),
    (12, 'dd', 'vert', 'p'),
    (13, 'dd', 'vert', 'p3'),
    (14, 'ee', 'vert', 'p6'),
    (15, 'ee', 'vert', 'p9'),
    (16, 'cc', 'vert', 'p1'),
    (17, 'cc', 'vert', 'p2'),
    (18, 'cc', 'vert', 'p3'),
    (19, 'bb', 'vert', 'p6'),
    (20, 'bb', 'vert', 'p5'),
    (21, 'aa', 'vert', 'p1'),
    (22, 'aa', 'vert', 'p2'),
    (23, 'aa', 'jaune', 'p1'),
    (24, 'aa', 'jaune', 'p2'),
    (25, 'aa', 'jaune', 'p3'),
    (26, 'bb', 'jaune', 'p5'),
    (27, 'bb', 'jaune', 'p2');
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `groupe`
    --
     
    CREATE TABLE `groupe` (
      `groupe` varchar(10) NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC;
     
    --
    -- Contenu de la table `groupe`
    --
     
    INSERT INTO `groupe` (`groupe`) VALUES
    ('bleu'),
    ('vert'),
    ('jaune');

  2. #2
    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 : 73
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Saluton,
    Effectivement c'est très simple
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select groupe, code, COUNT(*) as fois
    FROM code_observe
    GROUP BY groupe, code
    ORDER BY  groupe, code
    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)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 63
    Par défaut
    Merci pour cette prompt réponse.
    Je ne savais pas qu'un double "group by" était possible.

    Je n'ai pas une grande maitrise du count () .... group by ...
    mais bien souvent, j'ai vu (sur le net) que le count etait général (*).

    Est il préférable (moins d'erreurs) de le laisser ainsi et en groupant sur ce que l'on cherche ou bien de specifier ce que l'on veut compter ?

    Je ne sais si une réponse peut être apporter à cette question hormis "ça dépend".

  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 : 73
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Le seul piège avec COUNT(*) c'est que si tu veux compter des lignes en fonction d'une colonne qui peut contenir des valeurs NULL, ces lignes seront comptabilisées avec les autres.
    Je ne pense pas que ce soit le cas ici.
    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)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 63
    Par défaut
    Effectivement dans l'exemple donné, ce n'était pas le cas, mais cet exemple était une simplification de mon pb réel.
    Ta solution de regroupement ainsi que le complément sur le count(*) me permettent d'avancer sur mon projet.
    Merci à toi.

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

Discussions similaires

  1. requete avec OBCD et visual c++
    Par Anonymous dans le forum MFC
    Réponses: 12
    Dernier message: 18/11/2004, 16h15
  2. Requete requête sous sybase
    Par eddie dans le forum Sybase
    Réponses: 3
    Dernier message: 02/04/2003, 14h51
  3. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24
  4. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 13h43
  5. [Kylix] Requetes Kylix pour postgres
    Par Miltown dans le forum EDI
    Réponses: 1
    Dernier message: 29/05/2002, 20h22

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