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 :

Problème de COUNT et GROUP BY


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2011
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 25
    Points : 18
    Points
    18
    Par défaut Problème de COUNT et GROUP BY
    Bonjour,

    J'ai une requête qui marche très bien en local, mais qui foire en ligne, où j'ai ce message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
    Il se trouve que si j'ajoute un GROUP BY à ma requête comme MySQL le demande, mon COUNT ne marche plus correctement.
    Je ne comprends pas non plus pourquoi ça marche en local alors qu'en ligne il me réclame un GROUP BY...

    Voici ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *, min(moox) as indice, count(*) as nbre
    FROM station 
    INNER JOIN chiffre ON code_station_cg=nom_point
    INNER JOIN communes ON code_structure = commune
    WHERE X='717248' AND Y='2029380' AND annee='2011'
    Merci d'avance

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    À lire sur la bonne utilisation du GROUP BY.

    Et tant que tu y es, évite de relancer la guerre des étoiles !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Salam ; évite les * dans tes requêtes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    min(moox) AS indice, count(*) AS nbre
    là sa marche pas ensemble.

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2011
    Messages : 154
    Points : 282
    Points
    282
    Par défaut
    Salut,

    Il y a des enregistrements dans ta base en local? parce que sérieux, je me demande comment ça peut marcher ...

    Pour le COUNT, tu peux le remplacer par un truc avec ton langage de prog. Si tu tape direct dans la base et bien fait le en deux requêtes, une avec le COUNT, et l'autre avec le MIN.

    Et puis c'est quoi la relation de tes tables, j'ai l'impression que tu as un plantage dans la compréhension du INNER
    si tu as plusieurs chiffres par station comme j'en ai l'impression, tu dois faire un LEFT JOIN pour les chiffres. Dans ce cas tu peux garder ta requête intacte (sauf le LEFT) et faire un GROUP BY sur les code_station_cg et tu auras bien le nombre de chiffre par station dans nbre et le plus petit moox par station dans indice.

    @+ Piero

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2011
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    J'ai trouvé la solution dans ton lien CinePhil (et j'ai enlevé les * )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT champ1, champ2, etc, min(moox) AS indice, count(code_station_cg) AS nbre
    FROM station 
    INNER JOIN chiffre ON code_station_cg=nom_point
    INNER JOIN communes ON code_structure = commune
    WHERE X='717248' AND Y='2029380' AND annee='2011'
    GROUP BY code_station_CG
    @ BPiero, j'ai effectivement des enregistrements en local, je ne sais pas non plus pourquoi ça marchait en local. Sinon le COUNT et le MIN passent bien dans une seule requête. J'ai bien plusieurs chiffres par station, tu penses qu'avec un LEFT JOIN ça serait plus optimisé ?

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Apparemment tu n'as pas bien lu mon lien sur le GROUP BY !
    Toutes les colonnes du SELECT ne faisant pas l'objet d'une fonction de groupage doivent figurer dans le GROUP BY sous peine de voir des valeurs aléatoires pour les colonnes manquantes.

    De plus, les champs sont à la campagne ou dans les formulaires, pas dans les tables SQL qui ne sont composées que de colonnes et de lignes.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2011
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    Ok, je vais ajouter les autres champs dans le Group by (j'avais un peu zappé cette étape, et comme ça fonctionnait bien...)

    De plus, les champs sont à la campagne ou dans les formulaires, pas dans les tables SQL qui ne sont composées que de colonnes et de lignes.
    Et les etc ils sont où ?

    Plus sérieusement, j'ai mis ça parce-que c'est plus pratique et lisible que de mettre ici tous les autres champs de ma requête, mais rassure-toi: je n'ai aucun champs qui s'appelle "champ1" ou "etc".

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

Discussions similaires

  1. Problème count Join group by
    Par casa_sniper dans le forum PL/SQL
    Réponses: 5
    Dernier message: 08/12/2011, 12h21
  2. problème count et group by
    Par olivt0603 dans le forum Requêtes
    Réponses: 3
    Dernier message: 29/12/2010, 15h13
  3. Problème avec : COUNT,GROUP BY,ORDER BY
    Par xabidof dans le forum Langage SQL
    Réponses: 4
    Dernier message: 09/02/2010, 10h21
  4. Réponses: 3
    Dernier message: 09/10/2007, 16h36
  5. problème count et group by
    Par zulkifli dans le forum Requêtes
    Réponses: 3
    Dernier message: 24/11/2006, 04h53

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