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 2007: Jointure muli-values utilisant WHERE


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 12
    Points : 12
    Points
    12
    Par défaut ACCESS 2007: Jointure muli-values utilisant WHERE
    Bonjour,
    aprèrs lecture sur le POST sur les jointures, je pense que mon problème viens de là.

    Excusez-moi pour la longueur de ma question

    Je suis actuellement sur la création d'une base de données, et je suis entrain de finaliser les SORTIES.
    Mon modèle comprenant beaucoup d'exception:
    _ composant commun à plusieurs OUVRAGES
    _ composant à déstocker en fonction de la longeur/avancée/hauteur
    _ composant à déstocker manuellement: les PLUS-VALUES

    J'ai entré tous mes composants dans une table unique et je les ai catégorisé à l'aide du champs CATEGORIE lié à une table similaire comprend les expressions: NEANT / PLUS-VALUE / LONGEUR / AVANCEE / HAUTEUR

    J'ai créé une requête pour chaque type de composant sous la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT COMPOSANT.N°LigneComp, COMPOSANT.Reférence, Count(LIGNE_CMD_CLI.[#N°LigneOuv]) AS [Nombre_d'ouvrage_ayant_utilisé_ce_composant], Sum(LIGNE_CMD_CLI.Avancée) AS SommeDeAvancée
    FROM COMPOSANT LEFT JOIN (OUVRAGE LEFT JOIN LIGNE_CMD_CLI ON OUVRAGE.N°_LigneOuv = LIGNE_CMD_CLI.[#N°LigneOuv]) ON COMPOSANT.N°LigneComp = OUVRAGE.Nomenclature.Value
    WHERE (((COMPOSANT.Catégorie)="Avancée"))
    GROUP BY COMPOSANT.N°LigneComp, COMPOSANT.Reférence;
    et pour les composants communs à déstocker automatiquement en fonction de leurs utilisation par OUVRAGE:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT COMPOSANT.N°LigneComp, COMPOSANT.Reférence, COMPOSANT.Utilisé_par_ouvrage, Count(LIGNE_CMD_CLI.[#N°LigneOuv]) AS Ouvrages_réalisés, (([Ouvrages_réalisés])*([COMPOSANT].[Utilisé_par_ouvrage])) AS SommeCompNeant
    FROM COMPOSANT LEFT JOIN (OUVRAGE LEFT JOIN LIGNE_CMD_CLI ON OUVRAGE.N°_LigneOuv = LIGNE_CMD_CLI.[#N°LigneOuv]) ON COMPOSANT.N°LigneComp = OUVRAGE.Nomenclature.Value
    WHERE (((COMPOSANT.Catégorie)="Néant"))
    GROUP BY COMPOSANT.N°LigneComp, COMPOSANT.Reférence, COMPOSANT.Utilisé_par_ouvrage
    ORDER BY COMPOSANT.Reférence;
    Le PROBLEME: Afin de faciliter l'utilisation de la BDD, j'ai fait une restriction WHERE (CATEGORIE=Plus-Value) dans ma table TABLE_CMD_CLIENT sur les PLUS-VALUES de la table COMPOSANT.

    Mais voila, lorsque je veux prendre en compte toutes mes requêtes SORTIES, celle des PLUS-VALUE n'en pas prise en compte car on ne peut pas prendre en compte la table COMPOSANT mais uniquement le champs PLUS-VALUE.Value ...

    Je peux savoir combien de composants "plus-value" ont été commandés mais uniquement avec la requête suivant (sans jointure):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT LIGNE_CMD_CLI.[#Plus-value].Value, Count(LIGNE_CMD_CLI.[#Plus-value]) AS [CompteDe#Plus-value]
    FROM LIGNE_CMD_CLI
    GROUP BY LIGNE_CMD_CLI.[#Plus-value].Value;
    Je sais pas si cela est clair mais ma question est la suivante:
    comment faire une requête selection en joingnant la table LIGNE_CMD_CLIENT et la COMPOSANT pour créer la table SORTIE
    ?

    S'il vous plait, auriez-vous une piste, j'ai essayer les jointures (INNER JOINT, RIGHT and LEFT) ça marche pas, peut être qu'il est impossible avec la clause WHERE dans la table LIGNE_CMD_CLIENT ...

    Merci,
    Cordialement

  2. #2
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    J'ai relu 5 fois, toujours pas compris ...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    C'est bon, j'ai réussi!
    C'était simplement une requête multivalues utilisant where, qui à "bugger" ce qui m'a bloqué longtemps....

    Pardon pour se poste incompréhensible, je reconnais, j'essayerai d'être plus clair la prochaine fois ... après tout vous décrypter des codes informatiques pas le charabia

    Merci quand même d'avoir essayer de comprendre

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

Discussions similaires

  1. [AC-2007] utilisation de QueryDefs avec access 2007
    Par da_latifa dans le forum VBA Access
    Réponses: 4
    Dernier message: 17/09/2009, 21h05
  2. Utiliser Access 2007 runtime
    Par Megaly 38 dans le forum Runtime
    Réponses: 1
    Dernier message: 12/12/2008, 17h18
  3. PB Jointure sous access 2007
    Par cdsoft dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 27/05/2008, 11h05
  4. Utilisation mémoire Access 2007
    Par PhRey dans le forum Access
    Réponses: 2
    Dernier message: 13/03/2008, 22h09
  5. création des droit utilisation sous access 2007
    Par popofpopof dans le forum Sécurité
    Réponses: 26
    Dernier message: 22/08/2007, 20h08

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