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 :

[Access] Probléme simplification requete Jointure Externe


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 65
    Points : 37
    Points
    37
    Par défaut [Access] Probléme simplification requete Jointure Externe
    Bonjour,
    voilà mon souci : j'utilise une 1ere requete qui va chercher les achats faits par des clients, et je fais une 2nde requete avec jointure externe pour pouvoir afficher les dates où il n'y a pas d'achats (car sinon les dates sans achats n'apparaissent pas).
    Objectif: afficher toutes les dates, qu'elles aient des achats ou pas!

    Requete1:

    SELECT Sum(achat.MNT) AS SommeDeMNT, achat.dateliv
    FROM achat
    WHERE left(code_client,1) in ('0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9')
    AND (achat.code_client Like "2/*") AND (achat.produit=1)
    GROUP BY achat.dateliv;

    Requete2:

    SELECT achat.dateliv, [Requete1].SommeDeMNT
    FROM [Requete1] RIGHT JOIN achat ON [Requete1].dateliv=achat.dateliv
    GROUP BY achat.dateliv, [Requete1].SommeDeMNT;

    Je ne sais pas comment faire pour pouvoir "réduire" ces requetes afin de n'avoir qu'une seule requête qui puisse afficher les dates vides.
    Merci beaucoup.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 917
    Points : 51 693
    Points
    51 693
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT achat.dateliv, T.SommeDeMNT 
    FROM (SELECT Sum(achat.MNT) AS SommeDeMNT, achat.dateliv 
          FROM achat 
          WHERE left(code_client,1) in ('0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9') 
            AND (achat.code_client Like "2/*") AND (achat.produit=1) 
          GROUP BY achat.dateliv) as T
     RIGHT OUTER JOIN achat ON T.dateliv=achat.dateliv 
    GROUP BY achat.dateliv, T.SommeDeMNT
    A +

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 917
    Points : 51 693
    Points
    51 693
    Billets dans le blog
    6
    Par défaut
    Au passage, vous pouvez optimiser votre requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE left(code_client,1) in ('0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9')
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE left(code_client,1) BETWEEN '0' AND '9')
    Au passage votre LIKE est faux :

    et en VRAI SQL :

    en effet le joker * est spécifique à Access et inconnu dans le langage SQL

    A +

  4. #4
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 65
    Points : 37
    Points
    37
    Par défaut
    Oui je sais pour le *, mais vu que j'utilise Access c'est pour çà que * apparait
    désolé pour les puristes du sql ;-)
    merci beaucoup pour ton aide, je vais essayer çà desuite
    @++

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 65
    Points : 37
    Points
    37
    Par défaut
    J'ai essayé mais çà ne fonctionne pas.
    Access me dit qu'y a une erreur dans le FROM ( le second biensûr) j'ai essayé mais j'ai pas réussi à modifier la requete de façon à ce que cela fonctionne...
    Help pleasee

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 917
    Points : 51 693
    Points
    51 693
    Billets dans le blog
    6
    Par défaut
    Il est possible qu'access n'accepte pas les sous requêtes de type table dérivées. Dans ce cas je ne peut te donner d'autres solution, sans que tu me décrive plus en avant tes tables et fournisse un jeu de données comme spécifié dans ce post : http://www.developpez.net/forums/viewtopic.php?t=32668

    A +

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 65
    Points : 37
    Points
    37
    Par défaut
    Heu si access n'accepte pas çà alors c'est quand même possible???
    La table c'est simple :
    achat(code_client,dateliv,MNT,...)
    mais bon j'arrive pas a afficher les dates où il n'y a aucun achat

Discussions similaires

  1. [Requête] Jointure Externe Totale
    Par alcabk dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 28/09/2006, 14h47
  2. Requete Jointure Externe...Soucis!!
    Par paflolo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/03/2006, 11h25
  3. [requetes / Jointures externes] : expression de jointure
    Par Ptit_boeuf dans le forum Langage SQL
    Réponses: 5
    Dernier message: 28/07/2005, 16h42
  4. Réponses: 6
    Dernier message: 20/09/2004, 15h26
  5. [Requete] jointure externe -> where
    Par MrDuChnok dans le forum Langage SQL
    Réponses: 12
    Dernier message: 12/07/2004, 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