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 :

Select query avec COUNT et GROUP BY


Sujet :

Requêtes MySQL

  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Par défaut Select query avec COUNT et GROUP BY
    Bonjour,

    j'ai fait une requete afin de récupérer des statistiques depuis une table visitors, je cherche un résultat comme suite:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    EN: 3
    FR: 4
     
    MA: 20
    US: 15
    UK: 22
     
    Windows: 13
    Linux: 17
     
    etc
    Mais ce que j'obtiens est:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    en : 1
    France : 1
    en : 2
    Morocco : 2
    fr : 4
    Morocco : 4
    Je voudrais consolider les langues, pays,...

    avec une table comme suite:
    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
    33
    34
    35
    36
    37
    38
    39
    40
     
    CREATE TABLE IF NOT EXISTS `visitors` (
      `idvi` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `user_language` varchar(3) NOT NULL COMMENT 'which language the user is using: en, fr or ar',
      `ip_real` varchar(50) NOT NULL,
      `ip_proxy` varchar(50) NOT NULL,
      `country_name` varchar(50) NOT NULL,
      `country_code` varchar(3) NOT NULL,
      `city_name` varchar(100) NOT NULL,
      `region_name` varchar(150) NOT NULL,
      `place_latitude` varchar(20) NOT NULL,
      `place_longitude` varchar(20) NOT NULL,
      `page_url` longtext NOT NULL,
      `page_id` varchar(30) NOT NULL,
      `page_title` longtext NOT NULL,
      `browser_full` longtext NOT NULL,
      `browser_name` varchar(100) NOT NULL,
      `browser_platform` varchar(50) NOT NULL,
      `ismobile` int(1) NOT NULL DEFAULT '0' COMMENT '0: not, 1: mobile',
      `mobile_version` varchar(20) NOT NULL,
      `visit_date` varchar(30) NOT NULL,
      `visit_year` varchar(5) NOT NULL,
      `visit_month` varchar(20) NOT NULL,
      `visit_day` varchar(20) NOT NULL,
      `visit_dayname` varchar(20) NOT NULL,
      PRIMARY KEY (`idvi`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;
     
    --
    -- Dumping data for table `visitors`
    --
     
    INSERT INTO `visitors` (`idvi`, `user_language`, `ip_real`, `ip_proxy`, `country_name`, `country_code`, `city_name`, `region_name`, `place_latitude`, `place_longitude`, `page_url`, `page_id`, `page_title`, `browser_full`, `browser_name`, `browser_platform`, `ismobile`, `mobile_version`, `visit_date`, `visit_year`, `visit_month`, `visit_day`, `visit_dayname`) VALUES
    (1, 'en', '41.251.134.55', '', 'Morocco', 'MA', 'Marrakech', 'Marrakech-Tensift-Al Haouz', '31.6315', '-8.0083', '/en/SignUp.html', '6uOLZ9zsac', 'Sign up', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36', 'Chrome', 'MacOSX', 0, '', '1479790765', '2016', '11', '22', 'Tuesday'),
    (2, 'en', '41.214.156.122', '66.249.93.194', 'Morocco', 'MA', 'Casablanca', 'Grand Casablanca', '33.5928', '-7.6192', '/en/SignUp.html', '6uOLZ9zsac', 'Sign up', 'Mozilla/5.0 (Linux; Android 5.1.1; SM-J700F Build/LMY48B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.85 Mobile Safari/537.36', 'Safari', 'Android', 1, '5.1.1', '1479790817', '2016', '11', '22', 'Tuesday'),
    (3, 'fr', '41.214.156.122', '66.249.93.192', 'Morocco', 'MA', 'Casablanca', 'Grand Casablanca', '33.5928', '-7.6192', '/fr/SignUp.html', '6uOLZ9zsac', 'S''inscrire', 'Mozilla/5.0 (Linux; Android 5.1.1; SM-J700F Build/LMY48B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.85 Mobile Safari/537.36', 'Safari', 'Android', 1, '5.1.1', '1479790845', '2016', '11', '22', 'Tuesday'),
    (4, 'fr', '41.214.156.122', '66.249.93.194', 'Morocco', 'MA', 'Casablanca', 'Grand Casablanca', '33.5928', '-7.6192', '/fr/SignUp.html', '6uOLZ9zsac', 'S''inscrire', 'Mozilla/5.0 (Linux; Android 5.1.1; SM-J700F Build/LMY48B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.85 Mobile Safari/537.36', 'Safari', 'Android', 1, '5.1.1', '1479790849', '2016', '11', '22', 'Tuesday'),
    (5, 'fr', '41.214.156.122', '66.249.93.192', 'Morocco', 'MA', 'Casablanca', 'Grand Casablanca', '33.5928', '-7.6192', '/fr/Vehicules.html', 'WXZeg3JYA9', 'Véhicules', 'Mozilla/5.0 (Linux; Android 5.1.1; SM-J700F Build/LMY48B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.85 Mobile Safari/537.36', 'Safari', 'Android', 1, '5.1.1', '1479790874', '2016', '11', '22', 'Tuesday'),
    (6, 'fr', '105.157.186.57', '66.249.93.194', 'Morocco', 'MA', 'Marrakech', 'Marrakech-Tensift-Al Haouz', '31.6315', '-8.0083', '/fr/Vehicules.html', 'WXZeg3JYA9', 'Véhicules', 'Mozilla/5.0 (Linux; Android 5.1.1; SM-J700F Build/LMY48B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.85 Mobile Safari/537.36', 'Safari', 'Android', 1, '5.1.1', '1479790978', '2016', '11', '22', 'Tuesday'),
    (7, 'en', '41.214.156.122', '', 'France', 'FR', 'Casablanca', 'Grand Casablanca', '33.5928', '-7.6192', '/en/SignUp.html', '6uOLZ9zsac', 'Sign up', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36', 'Chrome', 'MacOSX', 0, '', '1479792357', '2016', '11', '22', 'Tuesday');
    Et mon code est:

    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
    $sqlVisi    = "SELECT user_language, COUNT(user_language) as userLanguage, country_name, COUNT(country_name) as countryName FROM visitors GROUP BY user_language, country_name";
     
    echo $sqlVisi.'<br>';
     
     
    $stmtVisi = $connect->prepare($sqlVisi);
     
    $stmtVisi->execute();
     
    $result = $stmtVisi->fetchAll();
     
    foreach($result as $v):
        $user_language  = $v['user_language'];
        $country_name   = $v['country_name'];
     
        $userLanguage  = $v['userLanguage'];
        $countryName   = $v['countryName'];
     
    // on affiche pour chaque élément son total
     
        echo $user_language.' : '.$userLanguage.'<br>';
        echo $country_name.' : '.$countryName.'<br>';
     
     
    endforeach;
    Merci a vous

  2. #2
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Sans doute utiliser des "union" aidera ...
    Ttester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT user_language, COUNT(*)  FROM visitors GROUP BY user_language
    UNION
    SELECT  country_code, COUNT(*) FROM visitors GROUP BY country_code
    UNION
    SELECT  browser_platform, COUNT(*)  FROM visitors GROUP BY browser_platform

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Par défaut
    Merci vttman, y a pas un moyen autre que UNION

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 636
    Billets dans le blog
    10
    Par défaut
    bonjour,

    utilisez UNION ALL, plutôt que UNION pour éviter les dé-doublonnages inutiles

Discussions similaires

  1. Requête avec COUNT et GROUP BY
    Par pelloq1 dans le forum Requêtes
    Réponses: 4
    Dernier message: 24/11/2014, 08h45
  2. requete select avec count et group by
    Par paco503 dans le forum Requêtes
    Réponses: 7
    Dernier message: 06/05/2013, 17h42
  3. Réponses: 7
    Dernier message: 02/02/2009, 20h04
  4. [mysql 5] requete avec count+ having + group by
    Par epeichette dans le forum Requêtes
    Réponses: 7
    Dernier message: 29/10/2008, 19h52
  5. Query sur plusieurs colonnes avec count(distinct...)
    Par Jeankiki dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/08/2004, 15h22

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