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

Requêtes et SQL. Discussion :

Jointure dans requête UNION ALL


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Août 2013
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Août 2013
    Messages : 186
    Points : 91
    Points
    91
    Par défaut Jointure dans requête UNION ALL
    Bonjour a tous
    J'ai fait appel au forum concernant une requête qui regroupait quatre requêtes.
    Mon problème a été résolu, merci encore.

    Malheureusement, j' ai essayé de faire deux jointures avec INNER JOIN et même WHERE mais pas de résultat voici le code de ma requête ( copie de copie REQtt )

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     SELECT T.ACTmat AS [ACTION], T.ABRmat AS CODE, T.STATmat & '-' & T.REFmat AS REFERENCE, T.DESmat AS DESIGNATION, T.UNImat AS U, Sum(T.QTE) AS QTE, T.PRIXmat AS PRIX, [QTE]*[PRIX] AS TT
    FROM (SELECT REQe.ACTmat, REQe.ABRmat, REQe.STATmat, REQe.REFmat, REQe.DESmat, REQe.UNImat, REQe.QTE, REQe.PRIXmat FROM REQe
    UNION ALL
    SELECT REQm.ACTmat, REQm.ABRmat, REQm.STATmat, REQm.REFmat, REQm.DESmat, REQm.UNImat, REQm.QTE, REQm.PRIXmat FROM REQm
    UNION ALL
    SELECT REQpm.ACTmat, REQpm.ABRmat, REQpm.STATmat, REQpm.REFmat, REQpm.DESmat, REQpm.UNImat, REQpm.QTE, REQpm.PRIXmat FROM REQpm
    UNION ALL
    SELECT REQpe.ACTmat, REQpe.ABRmat, REQpe.STATmat, REQpe.REFmat, REQpe.DESmat, REQpe.UNImat, REQpe.QTE, REQpe.PRIXmat FROM REQpe )  AS T
    WHERE T.ACTmat=TABact.IDmat
    AND T.STATmat= TABstat.IDstat
    GROUP BY T.ACTmat, T.ABRmat, T.DESmat, T.UNImat, T.PRIXmat, T.STATmat, T.REFmat;

    je joint ma base si cela peux servir
    J'ai quelque notion mais ça commence a être complexe pour mon niveau

    Merci a vous
    GESTmat - Copie (2).zip

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Personnellement

    Comme l'éditeur de SQL de Access est pire que Notepad et que débugger un morceau de la requête est extrêmement difficile, je recommande de traiter les requêtes union ainsi :

    1. faire une requête séparée par "morceau" de l'union.
    2. faire une requête union qui regroupe les requêtes séparées.


    la requête union ressemble alors à

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select [r1].* from [r1]
    union all select [r2].* from [r2]
    union all select [r3].* from [r3]

    si tu veux faire une jointure sur la requête union, tu fais une nouvelle requête qui prend la requête union en entrée et qui fait les jointures voulues.

    La mise au point et la maintenance sont grandement simplifiées.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Août 2013
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Août 2013
    Messages : 186
    Points : 91
    Points
    91
    Par défaut
    Bonjour et merci pour le conseil
    J'ai fait une deuxième requête pour mes jointures et ça marche au poil.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT TABact.CODact, [REQtt1].CODE, TABstat.CODstat & '-' & [REQtt1].REFERENCE AS REFERENCE, [REQtt1].DESIGNATION, [REQtt1].U, [REQtt1].QTE, [REQtt1].PRIX, [REQtt1].TT
    FROM TABstat INNER JOIN (TABact INNER JOIN REQtt1 ON TABact.IDact=[REQtt1].Action) ON TABstat.IDstat=[REQtt1].STATmat
    ORDER BY TABact.CODact, [REQtt1].CODE;

    Malgré la complexité si on pouvait m'orienter pour obtenir se résultat en une seule requête, je suis preneur.
    Pour ma culture générale


    Merci a marot_r

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

Discussions similaires

  1. [AC-2003] Requête Union all avec nbre de colonnes différents
    Par souketou dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 12/05/2009, 14h40
  2. changement de longueur d'une chaine dans requête UNION ?
    Par kikidrome dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 08/12/2008, 10h57
  3. calcul dans requête union
    Par deby23 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 15/02/2008, 10h10
  4. Réponses: 2
    Dernier message: 12/01/2008, 14h57
  5. Calcul de % sur une requête UNION ALL
    Par lodan dans le forum Langage SQL
    Réponses: 4
    Dernier message: 08/03/2007, 14h20

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