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

MySQL Discussion :

Syntax error or access violation:SELECT list is not in GROUP BY clause and contains nonaggregated column


Sujet :

MySQL

  1. #1
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Par défaut Syntax error or access violation:SELECT list is not in GROUP BY clause and contains nonaggregated column
    Bonjour
    après une simple requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $req=	"select nom,possesseur
    	from $table
    	group by possesseur
    	";
    J'ai ce message :
    Fatal error: Uncaught exception 'PDOException'
    with message 'SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column
    which is not functionally dependent on columns in GROUP BY clause;
    this is incompatible with sql_mode=only_full_group_by'

    PDOException: SQLSTATE[42000]: Syntax error or access violation:
    1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column
    which is not functionally dependent on columns in GROUP BY clause;
    this is incompatible with sql_mode=only_full_group_by

    Et après des recherches il semblerait qu'il y ait un problème avec les versions de MYSQL 5.7.5 et+.
    J'ai la version 5.7.14 et je suis sous wamp 3 pour l'instant.

    J'ai essayé de comprendre certains posts sur des forums , ou sites mais souvent en anglais (et j'ai du mal à maitriser la langue de Shakespeare ).
    Il est parfois proposé qu'il faut modifier un fichier ou en rajouter un "my.cnf" avec des valeurs ?

    Mais quelle est la bonne façon de faire pour résoudre ce problème de mysql selon vous ? à moins que cela vienne de ma requête ?

    (a part apprendre correctement l'anglais aussi mais je vais manquer de temps !)

  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
    Ce message est normal (et explicite) car dans le group by on a les champs d'agrégation (ici : possesseur)
    et dans le select si d'autres champs apparaissent (ici : Nom) ALORS il faut utiliser les fonctions d'agrégations (max, min, avg, count etc.)

    car on tente avec le de regrouper des lignes par possesseur donc s'il y a différents nom ça ne va pas le faire !


    Prenons des exemples de ce qui pourrait donc marcher
    Si la $table est remplie ainsi
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     select Nom, possesseur from $table
    -----------------
    Nom - Possesseur
    -----------------
    John Argent
    John Argent
    John Bronze
    John OR
    Xavier Laiton
    Johnna Laiton
    Johnna OR
    Cette requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select count(*),possesseur
    from $table
    group by possesseur
    nous renverra =>
    2 Argent
    1 Bronze
    2 Or
    2 Laiton

    Cette requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select nom,possesseur
    from $table
    group by nom, possesseur
    nous renverra =>
    John Argent
    John Bronze
    John OR
    Xavier Laiton
    Johnna Laiton
    Johnna OR

    Cette requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select max(nom),possesseur
    from $table
    group by possesseur
    nous renverra =>
    John Argent
    John Bronze
    John OR
    Xavier Laiton

    Cette requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select nom,count(*)
    from $table
    group by nom
    nous renverra =>
    John 4
    Xavier 1
    Johnna 2


    Note : l'ordre dans le select peut être bien sûr géré par un ORDER BY ...

  3. #3
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Par défaut
    ok c'est donc moi qui ne sait pas faire de requête avec group by !

    rien à voir avec la version de mysql ?

  4. #4
    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
    Non à priori, rien à voir avec mysql dans ce cas ...

  5. #5
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Par défaut
    ok donc résolu
    donc en plus de devoir apprendre l'anglais
    je vais de ce pas bosser correctement la clause GROUP BY voir réviser SQL en général avant de poster
    (mais bon ça aurait pu être un problème de compatibilité aussi (je me rassure un peu là hum))

  6. #6
    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
    Un forum c'est un lieu d'échanges ...
    si tout le monde savait tout sur tout, il n'aurait pas lieu d'être

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/09/2013, 09h14
  2. [PDO] Erreur louche : 'SQLSTATE[42000]: Syntax error or access violation: 1064'
    Par oliopur dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/03/2012, 17h10
  3. [MySQL] Erreur SQL : SQLSTATE[42000]: Syntax error or access violation: 1064
    Par petit.quent dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/12/2011, 16h13
  4. [MySQL] [MySQL] SQLSTATE[42000]: Syntax error or access violation: 1064
    Par Domotik35 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/07/2011, 16h42
  5. [PDO] Erreur incompréhensible : 'SQLSTATE[42000]: Syntax error or access violation: 1064'
    Par cyril_k dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 13/12/2008, 12h12

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