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

Développement SQL Server Discussion :

SQL - Requete imbriquée avec un SUM


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2012
    Messages : 13
    Points : 11
    Points
    11
    Par défaut SQL - Requete imbriquée avec un SUM
    Bonjour,

    Je viens poster sur ce forum et soliciter votre aide car je n'arrive pas a m'en sortir avec cette requete qui a premier abord me semblait simple !

    Pour faire simple.
    Je possede une table POMME qui contient deux champs VARIETE et COULEUR
    GOLDEN - Rouge
    GOLDEN - Verte
    PINKLADY - Rouge
    PINKLADY - Brun

    Une table BonDeCommande avec trois champs
    NumCommande - DateCommande et VARIETE (en lien avec table POMME)

    Enfin, une table FACTURE avec deux champs
    NumCommande (en lien avec BonDeCommande) et Total



    Je souhaite connaitre le Chiffre d'Affaire par POMME !

    Je lance la requete suivante:

    Select VARIETE,(Select ISNULL(Sum(TOTAL),0) From FACTURE inner join BONDECOMMANDE on BONDECOMMANDE.NumCommande=FACTURE.NumCommande WHERE BonDeCommande.VARIETE= POMME.VARIETE) from POMME

    J'obtiens un resultat correct mais comme j'ai dans la table POMME deux varietes, j'ai quatre ligne

    GOLDEN - 12
    GOLDEN - 0
    PINKLADY - 9
    PINKLADY - 5

    Alors que j'aimerai bien l'avoir par VARIETE simple !

    GOLDEN - 12
    PINKLADY - 14


    Voila, j'espere avoir été claire et vous remercie d'avance si vous avez idées.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Points : 1 327
    Points
    1 327
    Par défaut
    Bonjour,

    il faudrait ajouter un "Group by variete"
    Le Porc est un loup pour le Porc.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2012
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Merci pour votre réponse.
    J'ai bien tentée de rajouter GROUP BY mais sans resultat.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Points : 89
    Points
    89
    Par défaut
    Citation Envoyé par pompom75 Voir le message
    Je souhaite connaitre le Chiffre d'Affaire par POMME !
    Non, tu souhaites le chiffre d'affaire par Variété

    Citation Envoyé par pompom75 Voir le message
    J'ai bien tentée de rajouter GROUP BY mais sans resultat.
    Soit précis STP :
    Est-ce que cela provoque une erreur (et dans ce cas quel est le message),
    ou bien la requête fonctionne mais renvoie toujours 4 lignes ?
    Je penche pour la première alternative...

    Inutile d'utiliser une sous-requête pour calculer la somme.
    Voici une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Select 
        POMME.VARIETE, CA = sum(FACTURE.total) 
    FROM 
        POMME 
        inner join BONDECOMMANDE on POMME.VARIETE =  BonDeCommande.VARIETE  
        inner join FACTURE on BONDECOMMANDE.NumCommande=FACTURE.NumCommande
    GROUP BY
        VARIETE

  5. #5
    Membre à l'essai
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2012
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Merci pour ce complément et excuse moi de n'avoir été précise mais j'étais la tete dans le guidon a chercher une solution.

    Ta requete fonctionne, et me convient (même si elle ne prend pas en compte les varietes de pomme non vendues ... j'aurai bien aimé les avoir à 0 !) mais ce n'est pas bien important, j'ai déja passée trop de temps la dessus

    Un grand merci.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Points : 1 327
    Points
    1 327
    Par défaut
    Pour afficher aussi les pommes sans commande :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT 
        POMME.VARIETE, CA = sum(ISNull(FACTURE.total,0)) 
    FROM 
        POMME 
        LEFT JOIN BONDECOMMANDE ON POMME.VARIETE =  BonDeCommande.VARIETE  
        INNER JOIN FACTURE ON BONDECOMMANDE.NumCommande=FACTURE.NumCommande
    GROUP BY
        VARIETE
    D'ailleurs je me demande s'il ne faut pas aussi mettre un "LEFT" à la place du second "INNER", à tester, mais je pense que non.
    Le Porc est un loup pour le Porc.

  7. #7
    Membre à l'essai
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2012
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Merci une nouvelle fois pour ce complément. C'est parfait.

    Bravo a vous tous.
    Il me reste encore du chemin pour maitriser SQL .....

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

Discussions similaires

  1. Creer une requete imbriquée avec parametres
    Par ramazan dans le forum Développement
    Réponses: 2
    Dernier message: 03/01/2008, 11h30
  2. Creer une requete imbriquée avec parametres
    Par ramazan dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 03/01/2008, 11h30
  3. [Requête SQL]requete imbrique appelant même table
    Par moicats dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 26/03/2007, 16h36
  4. Problème de requete imbriquée avec hibernate
    Par Lolitaaa dans le forum Hibernate
    Réponses: 2
    Dernier message: 23/03/2007, 13h13
  5. [Access] requete imbriqué avec last
    Par ahcorad dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/07/2006, 15h32

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