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 :

[SQLServer] Requête avec SUM


Sujet :

Langage SQL

  1. #1
    FzF
    FzF est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 13
    Points : 13
    Points
    13
    Par défaut [SQLServer] Requête avec SUM
    Bonjour,

    J'essaie tant bien que mal de faire une requête avec une somme, mais je n'y arrive pas.
    J'ai deux tables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CONTRAT
    --------
    id
    prix
    societe_id
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SOCIETE
    --------
    societe_id
    nom
    Et ce que j'aimerai obtenir c'est les couples (nom, somme(prix)). J'ai donc fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT s.NOM, SUM(c.PRIX) 
    FROM CONTRAT AS c 
    INNER JOIN SOCIETE AS s ON c.SOCIETE_ID = s.SOCIETE_ID 
    GROUP BY c.SOCIETE_ID
    mais ça ne marche pas, j'ai un message d'erreur me disant que s.NOM doit être dans une fonction d'agrégat. Si je remplace s.NOM par s.SOCIETE_ID ça marche très bien...

    Voilà, donc si quelqu'un a une solution...

  2. #2
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Citation Envoyé par FzF
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT s.NOM, SUM(c.PRIX) 
    FROM CONTRAT AS c 
    INNER JOIN SOCIETE AS s ON c.SOCIETE_ID = s.SOCIETE_ID 
    GROUP BY c.SOCIETE_ID
    mais ça ne marche pas, j'ai un message d'erreur me disant que s.NOM doit être dans une fonction d'agrégat. Si je remplace s.NOM par s.SOCIETE_ID ça marche très bien...
    Il faut faire le remplacement inverse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT s.NOM, SUM(c.PRIX) 
    FROM CONTRAT AS c 
    INNER JOIN SOCIETE AS s ON c.SOCIETE_ID = s.SOCIETE_ID 
    GROUP BY s.NOM
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  3. #3
    FzF
    FzF est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Malheureusement ça ne marche pas mieux. Par contre l'erreur est différente, désormais c'est : "The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator". D'après ce que je comprend c'est qu'on ne peux pas faire de GROUP BY sur une chaîne

  4. #4
    FzF
    FzF est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Finalement j'ai résolu mon problème : mon champ NOM était de type text et on ne peut pas faire de GROUP BY sur ce type de champ. Du coup je l'ai mis en VARCHAR et la solution d'Alexandre marche !

    Merci !

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

Discussions similaires

  1. Tous les ID dans une requête avec SUM
    Par ToxiK dans le forum Requêtes
    Réponses: 3
    Dernier message: 30/09/2011, 18h56
  2. Requête avec SUM et procédure stockée
    Par Papy214 dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/03/2010, 10h31
  3. 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
  4. Requêt avec sum ne donne pas le bon résultat§
    Par _cece dans le forum Langage SQL
    Réponses: 10
    Dernier message: 04/11/2008, 18h53
  5. requête avec SUM
    Par jeanfi77 dans le forum Requêtes
    Réponses: 1
    Dernier message: 07/05/2007, 18h03

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