Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > ETL > Sunopsis
Sunopsis Forum d'entraide Sunopsis
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/04/2011, 15h22   #1
Membre du Club
 
Inscription : juin 2005
Messages : 269
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 269
Points : 67
Points : 67
Par défaut Problème jointure externe (LEFT JOIN et pas (+))

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.
Code :
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
J'obtiens à l'exécution l'erreur oracle suivante :
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.

Code :
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
Est il possible de forcer ODI à utiliser la syntaxe en left join.
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
tatayoyo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 13h15   #2
Membre expérimenté
 
Avatar de shaun_the_sheep
 
Homme
Chef de projet NTIC
Inscription : octobre 2004
Messages : 1 147
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Chef de projet NTIC
Secteur : Enseignement

Informations forums :
Inscription : octobre 2004
Messages : 1 147
Points : 562
Points : 562
Bonjour,

Personnellement j'avoue ne pas comprendre pourquoi cette double jointure externe sur 2 tables.

La jointure entre table 1 et table 2 renvoi les lignes communes entre les deux tables. Donc ne suffit il pas juste de faire une jointure externe entre la 3ieme table et la table 1 ou 2 ?

Sinon Je pense qu'il te faut passer par une étape intermédiaire , comme une vue par exemple avec table 1 et table 2 , ou une table temporaire.
shaun_the_sheep est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h14.


 
 
 
 
Partenaires

Hébergement Web