Problème de jointures complexes
Bonjour à tous !
J'ai réalisé une vue qui se base sur 3 autres vues (je pensais que ça me résoudrait un autre problème et au bout du compte c'est plus facile à maintenir). Sur cette vue "Racine" j'ai une jointure qui me pose un réel problème :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| FROM
Vue_Spend_Analysis_Branche1 AS [BRANCHE1],
PCH1
INNER JOIN OPCH
ON PCH1.DOCENTRY = OPCH.DOCENTRY
LEFT OUTER JOIN OSLP
ON PCH1.SLPCODE = OSLP.SLPCODE
LEFT OUTER JOIN OACT
ON PCH1.ACCTCODE = OACT.ACCTCODE
LEFT OUTER JOIN OPRJ
ON PCH1.PROJECT = OPRJ.PRJCODE
LEFT OUTER JOIN OOCR
ON PCH1.OCRCODE = OOCR.OCRCODE
LEFT OUTER JOIN Vue_Spend_Analysis_Branche2 AS [BRANCHE2]
ON PCH1.ITEMCODE = BRANCHE2.ITEMCODE
LEFT OUTER JOIN Vue_Spend_Analysis_Branche3 AS [BRANCHE3]
ON PCH1.BASEREF = BRANCHE3.TrgetEntry AND PCH1.BASELINE = BRANCHE3.LINENUM |
Cette jointure me remonte énormément trop de résultat. J'ai isolé le problème car en faisant ça
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| PCH1
INNER JOIN OPCH
ON PCH1.DOCENTRY = OPCH.DOCENTRY
LEFT OUTER JOIN OSLP
ON PCH1.SLPCODE = OSLP.SLPCODE
LEFT OUTER JOIN OACT
ON PCH1.ACCTCODE = OACT.ACCTCODE
LEFT OUTER JOIN OPRJ
ON PCH1.PROJECT = OPRJ.PRJCODE
LEFT OUTER JOIN OOCR
ON PCH1.OCRCODE = OOCR.OCRCODE
LEFT OUTER JOIN Vue_Spend_Analysis_Branche2 AS [BRANCHE2]
ON PCH1.ITEMCODE = BRANCHE2.ITEMCODE
LEFT OUTER JOIN Vue_Spend_Analysis_Branche3 AS [BRANCHE3]
ON PCH1.BASEREF = BRANCHE3.TrgetEntry AND PCH1.BASELINE = BRANCHE3.LINENUM |
Le nombre de résultats est correct !
J'avais tenté un bout de code que SQL-Server rejetait en bloc :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
FROM
OPCH
LEFT OUTER JOIN Vue_Spend_Analysis_Branche1 AS [BRANCHE1]
ON OPCH.CARDCODE = BRANCHE1.CARDCODE
PCH1
INNER JOIN OPCH
ON PCH1.DOCENTRY = OPCH.DOCENTRY
LEFT OUTER JOIN OSLP
ON PCH1.SLPCODE = OSLP.SLPCODE
LEFT OUTER JOIN OACT
ON PCH1.ACCTCODE = OACT.ACCTCODE
LEFT OUTER JOIN OPRJ
ON PCH1.PROJECT = OPRJ.PRJCODE
LEFT OUTER JOIN OOCR
ON PCH1.OCRCODE = OOCR.OCRCODE
LEFT OUTER JOIN Vue_Spend_Analysis_Branche2 AS [BRANCHE2]
ON PCH1.ITEMCODE = BRANCHE2.ITEMCODE
LEFT OUTER JOIN Vue_Spend_Analysis_Branche3 AS [BRANCHE3]
ON PCH1.BASEREF = BRANCHE3.TrgetEntry AND PCH1.BASELINE = BRANCHE3.LINENUM |
SQL-Server me rejette car il y a 2 déclarations de la table OPCH, seulement moi j'ai bien besoin de relié PCH1 <=> OPCH ainsi que OPCH <=> BRANCHE1.
J'espère que j'ai été à peu près clair, merci d'avance pour votre aide (parce que j'en ai vraiment besoin. T_T