Page 1 sur 1

Jointure sur table ARTGAMME et GAMSTOCK

MessagePosté: Jeu 25 Fév 2016 13:02
de zoocoral
Bonjour,

j'ai un souci pour une requéte.

J'ai 2 tables :
F_ARTGAMME(AR_Ref, AG_No, EG_Enumere) avec par exemple les valeurs suivantes :
REF1, 100, Blanc
REF1, 200, 2 ans
REF1, 300, 3 ans
REF1, 400, 4 ans

Ensuite j'ai une table F_GAMSTOCK(AR_Ref, AG_No1, AG_No2) avec les valeurs suivants par ex :
REF1, 200, 100
REF1, 300, 100
REF1, 400, 100

Le but de ma requête est de sortir ce résultat :

REF1 , Blanc, 2 ans
REF1 , Blanc, 3 ans
REF1 , Blanc, 4 ans

Je n'arrive pas à faire la jointure car dans la table Stock il y a 2 colonnes qui font références à la table Article_Gamme , je suis un peu perdu

Merci de votre aide !

Re: Jointure sur table ARTGAMME et GAMSTOCK

MessagePosté: Ven 11 Mar 2016 23:55
de asr31
Bonjour,

Ci-dessous une première requête pour sortir les croisés potentiels des gammes :
Code: Tout sélectionner
SELECT A.AR_Ref, A.AG_No AS AG_No1, A.EG_Enumere AS Enum1,
   ISNUll(B.AG_No,0) AS AG_No2, ISNULL(B.EG_Enumere,'') AS Enum2
FROM
 (SELECT AR_Ref, AG_No, EG_Enumere
    FROM F_ARTGAMME WHERE (AG_Type = 0)) AS A
 LEFT OUTER JOIN
 (SELECT AR_Ref, AG_No, EG_Enumere
    FROM F_ARTGAMME AS AG_1 WHERE (AG_Type = 1)) AS B
 ON A.AR_Ref = B.AR_Ref


Et pour retrouver les stocks (par dépot) :

Code: Tout sélectionner
SELECT A.AR_Ref, A.AG_No AS AG_No1, A.EG_Enumere AS Enum1,
     ISNULL(B.AG_No, 0) AS AG_No2, ISNULL(B.EG_Enumere, '') AS Enum2,
      F_GAMSTOCK.DE_No AS No_Depot, F_GAMSTOCK.GS_QteSto
FROM
   (SELECT AR_Ref, AG_No, EG_Enumere FROM F_ARTGAMME WHERE (AG_Type = 0)) AS A
   INNER JOIN
    F_GAMSTOCK ON A.AR_Ref = F_GAMSTOCK.AR_Ref AND A.AG_No = F_GAMSTOCK.AG_No1
    LEFT OUTER JOIN
    (SELECT AR_Ref, AG_No, EG_Enumere FROM F_ARTGAMME AS AG_1 WHERE (AG_Type = 1)) AS B
    ON F_GAMSTOCK.AG_No2 = B.AG_No AND A.AR_Ref = B.AR_Ref


Cordialement,