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 :

Creer une requete avec des LEFT JOIN et des GRO


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 11
    Points : 9
    Points
    9
    Par défaut [RESOLU] Creer une requete avec des LEFT JOIN et des GRO
    Je dispose de trois tables a partir desquelles je désire créer une requête :
    (Cf. image plus bas)
    • La table A propose une liste de produits vendus avec la date de la vente
    • La table B dresse la correspondance entre les produits et leur famille
    • Enfin la table C donne la liste de tous les mois de l’année…

    Je voudrais pouvoir obtenir une vue D donnant pour chaque mois de l’année, le total de produits vendus pour chaque famille.

    Je n’arrive jamais a obtenir le résultat escompte, en combinant des LEFT JOIN… j’ai soit toutes les familles de moteurs soit tous les mois, jamais les deux.

    Je me heurte en fait tres souvent a ce type de probleme, notamment lors de l'edition de serie statistique a destination de graph.

    Merci a ceux qui pourront me donner un coup de main, sur la question.


    [/img]

  2. #2
    Tan
    Tan est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 168
    Points : 158
    Points
    158
    Par défaut
    Voici une requête, même si je ne la trouve pas très belle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT req1.designation, req1.famille,req2.compte 
    FROM (SELECT famille,  Designation, mois
                FROM B, C 
                GROUP BY mois, designation, famille) as req1 
          LEFT OUTER JOIN 
               (SELECT designation, famille, count(1) as compte 
                 FROM A 
                       INNER JOIN 
                              (SELECT famille,produit,  Designation, mois 
                               FROM B, C) as ssB 
                       ON ssB.mois = month(A.date) AND A.produit = ssB.produit 
                  GROUP BY designation, famille) as req2 
          ON req1.famille = req2.famille AND req1.designation = req2.designation
    ORDER BY req1.mois,  req1.famille
    - req1 est une requête ou l'on a toutes les combinaisons mois/famille.
    - req2 est une requête calculant le nombre de produit par mois
    - Le LEFT OUTER JOIN de req1 et req2 donne donc le nombre de produit pour chaque combinaison
    - req1 est composé seulement d'une relation cartésienne (pour avoir toutes les combinaisons

    Cette requête doit pouvoir être améliorée, mais en attendant elle te fourni une piste.
    Salut.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    C'est ce que j'avais trouve finalement. Il y a peut-etre un moyen plus elegant de la creer mais je me contenterai de cette solution pour l'instant.
    J'ai par ailleurs ajouter une correspondance avec une famille Undefined / Undefined et un test pour les "valeurs" (c'est mal TM) NULL afin d'afficher les remarque dans A qui n'ont pas.
    Merci pour ta contribution !!!


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

Discussions similaires

  1. [AC-2003] Requete sur une table avec des "Left Join" en parallèle
    Par Currahee dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 27/08/2009, 09h37
  2. [Access] Comment créer une requete avec la date
    Par Daniela dans le forum Langage SQL
    Réponses: 1
    Dernier message: 27/09/2006, 11h06
  3. Transformation d'une requete avec des outer join
    Par keumlebarbare dans le forum Oracle
    Réponses: 5
    Dernier message: 20/09/2006, 17h23
  4. [MFC] creer une liste avec des check????
    Par ginounet dans le forum MFC
    Réponses: 4
    Dernier message: 16/06/2004, 11h47

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