Bonjour,
Je travaille avec ODI et des bases oracles.
J'ai un problème avec les jointures externe réalisées par ODI, qui utilise les (+) dans le WHERE de ma commande SQL.
Dans mon interface, j'ai besoin que deux tables différentes pointent toutes les deux vers une troisième table en jointure externe. (remarque : mes deux première tables sont par ailleurs liées entre elles)
Ce genre d'interface ODI génère le code suivant, dans cet exemple ou j'ai trois tables :
Les deux lignes en gras sont celles qui créées l'erreur.
J'obtiens à l'exécution l'erreur oracle suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT mes champs FROM table_1, table_2, table_3 WHERE table_1.clejointure = table_2.clejointure AND table_3.clejointure2 (+) = table_1.clejointure2 AND table_3.clejointure2 (+) = table_2.clejointure2
ORA-01417: une table ne peut être de jointure externe que pour une seule table
Alors que si je fais la requête moi même en utilisant un left join, cela fonctionne. Voici la requête que je créé moi même, équivalente, et qui ne pose pas de problème à oracle.
Est il possible de forcer ODI à utiliser la syntaxe en left join.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT mes champs FROM table_1 INNER JOIN table_2 on table_1.clejointure = table_2.clejointure LEFT JOIN table_3 on (table_3.clejointure2 = table_1.clejointure2 AND table_3.clejointure2 = table_2.clejointure2
Ou y a t'il un moyen de contourner ce problème lorsqu'on veut joindre trois tables ensemble avec deux jointures externe en provenance de deux tables différentes vers une même table ?
Merci,
Tata
Partager