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 sur requête : erreur 1111


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club Avatar de tiger33
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 77
    Points : 56
    Points
    56
    Par défaut Problème sur requête : erreur 1111
    salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT agent.ID, nom, prénom, MAX( Date_add( epa.Date_programmee, INTERVAL 1 Year ) ) AS Anniversaire
    FROM agent, epa
    WHERE epa.Id_agent = agent.ID
    AND epa.réalise = 'Y'
    AND MAX( Date_add( epa.Date_programmee, INTERVAL 1 Year ) ) <= '2007-01-01'
    GROUP BY ID_agent
    le texte de l'erreur : #1111 - Invalid use of group function

    Je ne comprends pas pourquoi
    help
    merci

  2. #2
    Membre régulier Avatar de jp_rennes
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mars 2006
    Messages : 72
    Points : 86
    Points
    86
    Par défaut
    peux-tu donner les structures de tes tables agent et epa ?
    ça aiderait....

  3. #3
    Membre régulier Avatar de jp_rennes
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mars 2006
    Messages : 72
    Points : 86
    Points
    86
    Par défaut
    Erreur: 1111 SQLSTATE: HY000 (ER_INVALID_GROUP_FUNC_USE)

    Message: Utilisation invalide de la clause GROUP

  4. #4
    Membre du Club Avatar de tiger33
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 77
    Points : 56
    Points
    56
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT epa.ID_agent, nom, prénom, MAX( Date_add( epa.Date_programmee, INTERVAL 1 Year ) ) AS Anniversaire
    FROM agent, epa
    WHERE epa.Id_agent = agent.ID
    AND epa.réalise = 'Y'
    GROUP BY epa.ID_agent, nom, prénom
    HAVING MAX( Date_add( epa.Date_programmee, INTERVAL 1 Year ) ) < '2007-01-01'
    c'est mieux --> résolu

  5. #5
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 112
    Points : 31 586
    Points
    31 586
    Billets dans le blog
    16
    Par défaut
    Bravo Tiger33,

    Je comprends que vous ayez été désemparé par le message d'erreur SQL concernant votre Group By.
    SQL est un langage au comportement parfois bizarre, comportant des contraintes non justifiées qu'il nous faut contourner plus ou moins astucieusement.

    La fonction Group By attend à juste titre que les attributs figurant dans la clause Select retournent des valeurs scalaires (atomiques, monovaluées...)

    La façon la plus simple pour un SGBD de s'en assurer est d'exiger que les attributs listés dans la clause Select figurent aussi dans la clause Group By ou encore d'utiliser une fonction d'agrégation dans la clause Select, par exemple :

    SELECT Agent.Id, Max(nom), Max(prénom), ...
    ...
    Group by Agent_Id

    Cela dit, dans votre tête vous savez très bien qu'un agent n'a qu'un nom et qu'un prénom, puisque Agent_Id est clé. SQL devrait en tenir compte, puisqu'on lui a défini cette contrainte d'unicité. Malheureusement ça n'est pas le cas et donc il faut en passer par les astuces vaseuses que nous venons d'évoquer et que nous dénonçons...

    Fsmrel

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

Discussions similaires

  1. Problème sur requête SQL (Caféine)
    Par Jean-Pierre49 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/11/2007, 08h19
  2. problème sur oracle: erreur ora-01403
    Par kkest dans le forum Forms
    Réponses: 1
    Dernier message: 09/11/2007, 14h05
  3. problème sur requête imbriqué
    Par Dam1en dans le forum Langage SQL
    Réponses: 2
    Dernier message: 21/10/2007, 16h55
  4. problème sur requête ajout
    Par yoruichi93 dans le forum Access
    Réponses: 7
    Dernier message: 10/05/2006, 14h51
  5. Problème sur requête insert mysql
    Par kcizth dans le forum Requêtes
    Réponses: 5
    Dernier message: 04/02/2006, 18h37

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