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 :

Problème jointure et sum


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Points : 6
    Points
    6
    Par défaut Problème jointure et sum
    Bonjour

    Je souhaite faire une requête avec plusieurs tables dont une avec un regroupement.
    J’ai une table A qui est celle des commandes et des tables B, C,D qui sont des tables annexes.
    J’ai fait une requête avec des inner join avec A et B,c,d qui fonctionne bien.

    Aujourd’hui je voudrais rajouter un lien vers la table Z qui est la table des stocks dans des emplacements.
    J’ai 2 problèmes :
    -Cette table contient plusieurs fois l’article s’il est dans plusieurs emplacements
    -Cette table peut être vide si je n’ai plus de stock

    Je voudrais rajouter dans ma requête le champ stock qui est la somme des lignes de Z avec un lien entre A et Z qui est l’article.

    Comment faire ?
    Si je fais un inner join je n’ai plus de sum
    Mais si je fais un group by avec un A.article =Z.article et qu’il n’y a aucun enregistrement pour 1 article dans la table Z, alors je ne verrai plus la ligne où il apparaît dans A

    merci de votre aide

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 262
    Points : 12 936
    Points
    12 936
    Par défaut
    Bonjour,
    Il faut faire une jointure externe avec la table Z, faire un sum sur les quantités en stock (et gérer le cas des produits sans stock avec on coalesce) et grouper sur toutes les autres colonnes renvoyées par la requête.

    Tatayo.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    je suis pas sur d'y arriver mais essayons, est ce que cela donnerai cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    select A.article, B.taille, C.fabriquant, coalesce(sum (Z.stock),0)
     from A, Z
    inner join B on A.article = B.article
    inner join C on A.article = C.article
    where
    A.article = Z.article
    group by A.article, B.taille, C.fabriquant
    Est ce que le group by va fonctionner avec des champs qui ne sont pas dans Z?

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    tatayo vous disait de faire une jointure externe, justement pour que les lignes n'ayant pas de correspondance dans Z apparaissent (avec les colonnes de Z à NULL)

    une jointure externe se fait avec un LEFT OUTER JOIN :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT A.article, B.taille, C.fabriquant, coalesce(sum (Z.stock),0)
     FROM A
    INNER JOIN B ON A.article = B.article
    INNER JOIN C ON A.article = C.article
    LEFT OUTER JOIN Z ON A.article = Z.article
    GROUP BY A.article, B.taille, C.fabriquant

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2013
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    merci ça marche
    pour moi une jointure externe c'était avec le = dans la clause where

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 04/07/2006, 11h56
  2. Problème jointure
    Par RiPSO dans le forum Requêtes
    Réponses: 3
    Dernier message: 30/04/2006, 23h55
  3. [MySQL] Jointure et Sum
    Par dark_vidor dans le forum Langage SQL
    Réponses: 7
    Dernier message: 17/03/2006, 14h01
  4. Problème jointure de tables
    Par Carter dans le forum Requêtes
    Réponses: 1
    Dernier message: 07/02/2006, 12h41
  5. SQL, problème de Montant (SUM) multiplié
    Par ronando dans le forum Langage SQL
    Réponses: 9
    Dernier message: 20/10/2005, 15h48

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