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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : contrôleur de gestion

    Informations forums :
    Inscription : Septembre 2017
    Messages : 2
    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 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 136
    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 : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : contrôleur de gestion

    Informations forums :
    Inscription : Septembre 2017
    Messages : 2
    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