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 :

N'arrive pas additioner avec SUM ou GROUP BY


Sujet :

Requêtes MySQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    contrôleur de gestion
    Inscrit en
    Septembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : contrôleur de gestion

    Informations forums :
    Inscription : Septembre 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut N'arrive pas additioner avec SUM ou GROUP BY
    Bonjour,

    Je cherche à faire une requête prélevant des informations dans 4 tables.
    Elle consiste à présenter les résultats journaliers d’agents.
    Voici la composition des tables :
    AGENTS : ID, NOM, PRENOM, AGE
    OBEJCTIFS : ID, DATE, CIBLE
    DOSSIERS :ID, DATE, EFFECTUE
    SYNTHESES : ID, BUREAU, HIVER, PRINTEMPS, ETE, AUTOMNE

    Chaque dossier effectué créé une ligne dans la BDD.
    La requête suivante fonctionne, mais donne plusieurs lignes pour une même date (pour les 2 premiers agents).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select
    NOM ||' '|| PRENOM as “Nom Prénom”, BUREAU, DATE, EFFECTUE, CIBLE
    from AGENTS
    join SYNTHESES on (AGENTS.ID = SYNTHESE.ID)
    join DOSSIERS on (AGENTS.ID = DOSSIERS.ID)
    join OBJECTIFS on (AGENTS.ID = OBJECTIFS.ID) and (DOSSIERS.DATE = OBJECTIFS.DATE)
    where ID = 1 and ID = 2
    Le problème est que je souhaite présenter ces résultats de manière à avoir qu’une seule ligne par jour afin de pouvoir comparer les résultats aux cibles (toujours pour les 2 premiers agents).
    J’ai tenté ceci qui me donne l’erreur 104 suivante : Invlalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select
    NOM ||' '|| PRENOM as “Nom Prénom”, BUREAU, DATE, sum(EFFECTUE), CIBLE
    from AGENTS
    join SYNTHESES on (AGENTS.ID = SYNTHESE.ID)
    join DOSSIERS on (AGENTS.ID = DOSSIERS.ID)
    join OBJECTIFS on (AGENTS.ID = OBJECTIFS.ID) and (DOSSIERS.DATE = OBJECTIFS.DATE)
    where ID = 1 and ID = 2
    group by DATE
    order by NOM, DATE
    Je ne suis pas un expert en SQL et je blaire comme il faut avec celle-ci.
    Quelqu'un aurait-il une solution?
    Merci de votre aide,

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Citation Envoyé par nonorpz Voir le message
    Invlalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select
    NOM ||' '|| PRENOM as “Nom Prénom”, BUREAU, DATE, sum(EFFECTUE), CIBLE
    from ...
    group by DATE
    order by ...
    Le message d'erreur me semble clair : il y a dans la clause SELECT des expressions qui ne sont pas reprises dans la clause GROUP BY et qui ne font pas l'objet d'une fonction d'agrégation.
    En l'occurrence NOM ||' '|| PRENOM et BUREAU.
    Il faut donc choisir si elles doivent faire partie des conditions de regroupement ou leur appliquer une fonction d'agrégation.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    contrôleur de gestion
    Inscrit en
    Septembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : contrôleur de gestion

    Informations forums :
    Inscription : Septembre 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Merci
    Effectivement,
    Évident pour vous... 😄
    Problème réglé. Merci beaucoup de votre aide.

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

Discussions similaires

  1. j'arrive pas à travailler avec parseFloat
    Par saryry dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/07/2009, 08h51
  2. PB Pourcentage Sur requête avec SUM et GROUP BY
    Par laetus dans le forum Langage SQL
    Réponses: 9
    Dernier message: 11/06/2009, 14h18
  3. Je n'arrive pas à supprimer avec un DataSet
    Par tssi555 dans le forum VB.NET
    Réponses: 2
    Dernier message: 25/08/2008, 13h05
  4. Sélection d'une plage (je n'y arrive pas même avec la FAQ :'( )
    Par Zak Blayde dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 11/01/2008, 14h26
  5. [SQL] Jointure de table avec SUM et GROUP BY
    Par waterjetmedia dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 20/09/2007, 13h17

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