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

Langage SQL Discussion :

Pb de "aggregate function" dans un req. S


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 10
    Points : 7
    Points
    7
    Par défaut [Résolu] Pb de "aggregate function" dans un req. S
    Bonjour,

    Apres lien de deux tables, je souhaiterais effectuer cette requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT DISTINCTROW employee.LAST_NAME, employee.FIRST_NAME, employee.EMPLOYEE, DAILY.DATE, employee.DEPARTMENT, SUM(DAILY.OT)
    FROM DAILY INNER JOIN employee ON DAILY.EMPLOYEE = employee.EMPLOYEE
    WHERE (((DAILY.DATE) Between #9/1/2002# And #9/30/2002#) AND ((employee.EMPLOYEE) Like "*381"));
    Le probleme est que le message d'erreur renvoye est :
    You tried to execute a query that does not include the specified expression 'LAST_NAME' as part of an aggregate function
    Zut.
    Par contre, si j'execute cette requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Sum(DAILY.OT) AS Expr1
    FROM DAILY INNER JOIN employee ON DAILY.EMPLOYEE = employee.EMPLOYEE
    WHERE (((DAILY.DATE) Between #9/1/2002# And #9/30/2002#) AND ((employee.EMPLOYEE) Like "*381"));
    Dans ce cas tout va bien.
    J'imagine que ce doit etre un probleme d'aggregation de fonctions (ca fait bien sur le papier), mais je ne vois pas pourquoi.

    Merci d'avance.

    Zubral

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    ajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GROUP BY employee.LAST_NAME, employee.FIRST_NAME, employee.EMPLOYEE, DAILY.DATE, employee.DEPARTMENT
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Alors ca c'est du bonheur, ca fonctionne.
    Merci beaucoup
    Tu pourrais m'expliquer (si t'as le temps) le pourquoi du comment ?
    Il faut faire en gros "2 paquets" selon que l'on souhaite voir un champ, ou selon que l'on souhaite appliquer une fonction arithmetique, si j'essaye de comprendre ?

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Si tu veux un min, (ou n'importe quel agrégat), il te faut définir un groupe, l'une des règles fondamentales est que ce que tu sélectionnes soit dans le group by ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT a,b,c, min(..), avg(...)
    FROM ...
    WHERE ...
    GROUP BY a,b,c,d (a,b,c sont obligatoires, pas d puisqu'il n'est pas sélectionné)
    HAVING max() > 2* avg()
    Cherches sur le site tu vas trouver des tuts
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Ok, je crois avoir a peu pres pige, c'est cool merci.
    Pour ce qui est des tuts, j'etais sur celui de Frederic Brouard, mais j'avoue que j'avais pas cherche assez longtemps.
    Bon apres-midi a toi.

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

Discussions similaires

  1. Variable avec quotes(simple ou double)dans un input
    Par -Neo- dans le forum Langage
    Réponses: 1
    Dernier message: 25/06/2007, 11h23
  2. Réponses: 15
    Dernier message: 21/02/2007, 17h29

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