Left join(select ... where champ = champ du select principal

Bonjour

Nouveau sur le site, je n'ai pas su créer un titre simple, désolé.

Donc, j'ai un SELECT sur ma table principale

un LEFT JOIN sur 1ére table secondaire

un LEFT JOIN sur 2nde table secondaire

un LEFT JOIN (SELECT) sur 3ème table secondaire

WHERE...

mon problème est que je veux, dans le LEFT JOIN SELECT... filtrer les enregistrements par rapport a la valeur d'une date du select principal et là, ça plante (The multi-part identifier "ctrh.FVDT - Valid from" could not be bound)

en espérant être plus clair,

merci d'avance pour votre aide

SELECT ctrh.[CONO - Environment] Cono
      ,ctrh.[AGNB - Agreement number] Ctr
      ,ctrh.[SUNO - Supplier] Frn
      ,ctrh.[FVDT - Valid from] 'Valide du'
...
...
FROM [Purchase agreement header] ctrh
  LEFT JOIN [Purchase agreement lines] ctrln
...
...
LEFT JOIN [Purchase agreement prices] ctrpu
...
...
  LEFT JOIN
        (
        SELECT [FACI - Facility],[SUNO - Supplier],[ITNO - Item number],SUM([RVQA - Received quantity]) QtRecue
            FROM [Purchase order line]
            WHERE [SUNO - Supplier]='F1570' and [RVQA - Received quantity]>0 [u]and [CODT - Confirmed delivery date] >= ctrh.[FVDT - Valid from][/u]
            GROUP BY [FACI - Facility],[SUNO - Supplier],[ITNO - Item number]
        ) 
            AS t2 ON ...

Bonjour,

il me semble que ton WHERE ctrh.FVDT - Valid from ... est une condition qui se rapporte au JOIN et non au SELECT, donc selon moi tu dois

soit différencier le WHERE qui se rapporte au SELECT du ON qui se rapporte au JOIN.

left join (select .... where condition du select) ON condition du left join

soit ajouter la table ctrh dans le FROM du SELECT de ton LEFT JOIN si la condition se rapporte au SELECT.

merci h2so4

j'ai opté pour la 2nde solution et ça semble fonctionner.

Rechercher des sujets similaires à "left join select where champ principal"