|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre du Club
![]() Inscription : juin 2005 Messages : 269 ![]() |
Bonjour,
Si je voulais faire une interface qui joint deux tables, mais dont on ne prends que certains enregistrements de la deuxième table. En fait, on ne ferait pas la jointure directement sur la deuxieme table, mais sur un "sous select" de cette deuxieme table. Si cette interface se traduisait en SQL, on obtiendrait quelquechose de ce genre : Code :
Code :
Ou puis je faire tout dans une seule interface, sans table temporaire (c'est ce que je souhaiterais pouvoir faire). J'espère avoir clairement expliqué mon problème, sinon demandez moi des précisions. Merci. |
||||
|
|
00
|
|
|
#2 | ||
|
Membre actif
![]() Consultant informatique Inscription : mars 2003 Messages : 130 ![]() |
oui tu peux le faire sans table temporaire.
tu as ta jointure Citation:
Citation:
J’espère avoir été assez clair Pour rendre la sous requête dynamique (qui puisse gérer les différent context) tu peut utiliser la fonction getSchemaName plus d'info dessus ici : http://gerardnico.com/doc/odi/webhel...chemaname.html |
||
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : juin 2005 Messages : 269 ![]() |
Ok, merci bcp pour la réponse.
Je vais essayer ça. c'est pas mal quand même ODI... |
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : juin 2005 Messages : 269 ![]() |
J'ai quand même un problème, c'est que je veux faire une jointure externe entre tab1 et tab2.
Et j'obtiens une erreur SQL parceque Oracle ne peux pas faire de jointure externe sur un sous select. |
|
|
00
|
|
|
#5 |
|
Membre actif
![]() Consultant informatique Inscription : mars 2003 Messages : 130 ![]() |
Je n'en suis pas sur à 100% mais je pense que si tu veux avoir une jointure externe il faut le faire en 2 temps
Mais il y a peut être une autre solution , celle de gérer toi même la jointure externe en mettant un (+) du coté de la table ou tu veux inclure toutes les lignes. Je n'ai pas tester cet solution. |
|
|
00
|
|
|
#6 | ||||
|
Membre du Club
![]() Inscription : juin 2005 Messages : 269 ![]() |
en fait, ODI rajoute deja lui meme le (+) dans la requete SQL.
Meme si je saisie ma condition comme cela Code :
Code :
Dans tous les cas, j'ai l'erreur SQL suivante : une colonne ne peut pas être jointe extérieurement à une sous-interrogation |
||||
|
|
00
|
|
|
#7 |
![]() ![]() Consultant en Business Intelligence Inscription : juillet 2008 Messages : 950 ![]() |
Tu peux pas déclarer dans ODI la jointure en stricte et rajouter les (+) à la main ?
Sinon tu peux aussi passer par une vue. Dans ODI 11g les interfaces temporaires sont directement utilisées pour faire du sous-select, on n'est plus obligé de passer par une table temporaire. |
|
00
|
|
|
#8 | ||
|
Membre actif
![]() Consultant informatique Inscription : mars 2003 Messages : 130 ![]() |
come l'a dis doc tu met la jointure en strict et les (+) tu les met à la main
mais pas dans la condition !!! ca te donne une jonture ouverte : Citation:
Citation:
|
||
|
|
00
|
|
|
#9 | ||
|
Membre du Club
![]() Inscription : juin 2005 Messages : 269 ![]() |
Ok, avec cette méthode la jointure sur les tables est ouverte. Mais sur oracle, si tu n'ouvres pas aussi au niveau de la condition, c'est comme si tu fermais la jointure.
Tu es donc obligé d'ouvrir la jointure sur les tables comme tu as fait (sur les clefs de jointure). Et tu dois aussi ouvrir la jointure sur la condition, comme ceci : Code :
ORA-01799: une colonne ne peut pas être jointe extérieurement à une sous-interrogation Doc, tu parles de faire une vue, directement dans ODI ? ou de la faire préalablement dans Oracle ? Merci à tous les deux pour votre aide. |
||
|
|
00
|
|
|
#10 | ||
![]() ![]() Consultant en Business Intelligence Inscription : juillet 2008 Messages : 950 ![]() |
tu peux faire une vue, par exemple
Code :
Mais tu perds le lien avec la table dans les métadonnées odi. |
||
|
00
|
|
|
#11 |
|
Membre du Club
![]() Inscription : juin 2005 Messages : 269 ![]() |
Ok. ca nécessite un étape intermédiaire avant l'interface donc.
|
|
|
00
|
|
|
#12 |
![]() ![]() Consultant en Business Intelligence Inscription : juillet 2008 Messages : 950 ![]() |
Yes
Soit tu crées la vue à l'avance, soit tu as l'ame d'un bricoleur et tu crées un KIM qui te génère ta vue à la volée ... |
|
00
|
|
|
#13 |
|
Membre du Club
![]() Inscription : juin 2005 Messages : 269 ![]() |
merci pour vos réponses.
Je pense que c'est trop spécifique à cette interface pour mettre ca dans un KM qui ont une vocation plus généraliste de mon point de vue. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com