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 select avec count et group by


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Mai 2009
    Messages : 131
    Points : 43
    Points
    43
    Par défaut requete select avec count et group by
    Bonjour,
    voila j'ai une table mysql qui contient trois champs jour, heure,catégorie et nature. je voudrais faire une requête qui va me grouper le champs nature et faire la somme.
    dans la table une catégorie peut avoir comporter plusieurs nature.

    j'ai fait une requête qui marche mais le résultat ne correspond pas au contenu réelle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT jour, heure,choixcategorie as Categorie,nature as Nature, count(*) as Total FROM `custom_112` where CONCAT(`jour`,' ', `heure`) between '2013-04-17 08:00:00' and '2013-04-17 23:00:00' group by nature
    merci d'avance

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Mai 2009
    Messages : 131
    Points : 43
    Points
    43
    Par défaut
    personne pour m'aider

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Bonsoir,

    sur quel colonne veut tu faire un regroupement et pour avoir quel information ?

    Ta première requête est fausse car tu veut afficher des colonnes qui ne sont pas soumise à une fonction de regroupement ou n'apparaisse pas dans la clause GROUP BY.
    une réponse vous a permis d'avancer ?

  4. #4
    Membre averti
    Profil pro
    Administrateur
    Inscrit en
    Mai 2008
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 237
    Points : 433
    Points
    433
    Par défaut
    pourquoi ne pas remplacer les champs jour et heure par un seul champ date.
    concat retourne une chaine de caractères donc between semble comparer des chaines de catactère et non des dates.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Mai 2009
    Messages : 131
    Points : 43
    Points
    43
    Par défaut
    j'ai une table qui a 5 champs catégorie, nature, commentaire, jour et heure.
    ce que je souhaite c'est avoir une requête qui me permet de regrouper tous les natures identiques et de les compter chacun.
    la requête que j'ai mis plus haut me permet de le faire mais le résultat ne tombe pas juste parce le résultat du count et inférieur a ce qu'il ya dans la base.
    merci.

  6. #6
    Membre averti
    Profil pro
    Administrateur
    Inscrit en
    Mai 2008
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 237
    Points : 433
    Points
    433
    Par défaut
    Quel est le type de tes champs jour et heure. La concaténation est-elle bien formatée ? Il sera intéressant de spécifier un champ pour COUNT, par exemple COUNT(id). Peux-tu donner un peu plus d'information que cette requête ? Par exemple le code source de création de ta table.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Mai 2009
    Messages : 131
    Points : 43
    Points
    43
    Par défaut
    voici le code source de la table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE TABLE IF NOT EXISTS `custom_112` (
      `lead_id` int(9) unsigned NOT NULL,
      `choixcategorie` varchar(357) default '',
      `commentaire` text,
      `nature` enum('1heure mattel','1heure mattel plus','1heure libert','Jeux en cour','Jeux ventuel','Promotion en cour','Promotion ventuel','Offre echbeh','Offre folie','Offre  rajahaa terbehaa','Pack El kheir','Layali mattel','Tarif Mattel','Alakhabar','Ani Mobile','Aljazeeza','Quotidien News','Confrence','Double appel','Transfert de credit','Foli','Lis rouge clir','Mechili','Forfait 10heure','Forfait 15heure','Forfait 30heure','Renvoi dappel','Khaima','Khaima sms','Transfert de crdit','Sms pub','Sms chat','Signalisation appel manqu','Tarification de Mattel','Renvoi dappel','Roaming','Compte expir','Date dexpiration abonnement','Dure de validit des cartes','Prix de labonnement','Sim grille','Indicatifs des pays','Horaire Mattel','Assistance consultation crdit','Validation carte','Carte non valide','Carte top gratte','Facturation 132','Non emission international appel','Non reception international appel','Non emission national appel','Non reception national appel','Non emission international sms','Non reception international sms','Non emission national sms','Non reception national sms','Changement de langue en Arabe','Changement de langue en Franais','Changement de langue en Anglais','Activation Sim','Numro Suspendu','Shut down','Reclamation perte crdit','Demande code transaction','Assistance dblocage code pin','Assistance dblocage code puk','1heure mattel','1heure mattel plus','1heure libert','Layali mattel','Forfait 10heure','Forfait 15heure','Forfait 30heure','Khaima','Khaima sms','Alakhabar','Ani Mobile','Aljazeeza','Quotidien News','Les USSD les numros courts','Assistance coute message','Activation de la boite vocale','Desactivation de la boite vocale','Renvoi boite vocale','Changement de la langue du BV','Pas de reponse','Client a raccroche','Plaisanterie','Question Insolite','Salutation et remerciement','3G','Duo plus','Modem Cles USB','Demande dactivation gprs e-mattel','Info gprs e-mattel','Info configuration gprs e-mattel','info configuration mms','Facturation e-Mattel','Besoin de couverture','Coupure de communication','Echos','Mauvaise qualit vocale','Problme de couverture','Tomber sur un autre abonn') default NULL,
      `Jour` date default NULL,
      `heure` time default NULL,
      PRIMARY KEY  (`lead_id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    merci

  8. #8
    Membre averti
    Profil pro
    Administrateur
    Inscrit en
    Mai 2008
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 237
    Points : 433
    Points
    433
    Par défaut
    Le seul problème que je constate c'est au niveau de la définition de ta table.

    - Essaie de modifier le type de ton champ nature. ils y a des doublons dans la liste des valeurs de ENUM. Pourquoi ne pas les mettre dans une table nature.

    - Between sera plus efficace si les champs jour et date tenait sur un seul champ de type date. On appliquerai aussi un index sur ce champ.

    On obtiendrait :
    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
     
    DROP TABLE IF EXISTS `test`.`custom_112`;
    CREATE TABLE  `test`.`custom_112` (
      `lead_id` int(9) unsigned NOT NULL,
      `choixcategorie` varchar(357) DEFAULT '',
      `commentaire` text,
      `nature` varchar(100) DEFAULT NULL,
      `date` datetime DEFAULT NULL,
      PRIMARY KEY (`lead_id`),
      KEY `date` (`date`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
     
    SELECT date, choixcategorie, nature, count(id) total 
    FROM custom_112
    WHERE date BETWEEN '2013-04-17 08:00:00' AND '2013-04-17 23:00:00' 
    GROUP BY nature

Discussions similaires

  1. requete select avec group by
    Par lekonquerant dans le forum Requêtes
    Réponses: 1
    Dernier message: 17/09/2009, 14h28
  2. [mysql 5] requete avec count+ having + group by
    Par epeichette dans le forum Requêtes
    Réponses: 7
    Dernier message: 29/10/2008, 19h52
  3. probleme requete select avec 2 colonnes
    Par cricri45000 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/04/2005, 10h39
  4. requete select avec AS remplacement de valeur
    Par pi3141563 dans le forum Requêtes
    Réponses: 3
    Dernier message: 17/04/2004, 22h15
  5. requete SELECT avec un nombre constant
    Par gurumeditation dans le forum Requêtes
    Réponses: 3
    Dernier message: 04/07/2003, 20h04

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