Bonjour,
J'ai un package qui me retourne une table d'identifiant.
Je souhaite faire une jointure sur ceux-ci avec l'union de deux tables.
Mon problème dépend des paramètres passés dans mon package
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select * from tmp, (select id from tiers union select id from acteur) acttiers where acttiers.id in (select * from table(pack_tmp.ACTTIER((select id from tmp tmp2 where tmp2.id=tmp.id)))).
En effet, si je met directement un nombre, la requête est immédiate.
Si j'écris la valeur de tmp.id en lui mettant un filtre sur la valeur, c'est hyper long
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select * from tmp, (select id from tiers union select id from acteur) acttiers where acttiers.id in (select * from table(pack_tmp.ACTTIER((1300))))
Si je passe par un appel à une table intermédiaire, cela reste long
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select * from tmp, (select id from tiers union select id from acteur) acttiers where tmp.id=1300 and acttiers.id in (select * from table(pack_tmp.ACTTIER((tmp.id))))
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select * from tmp, (select id from tiers union select id from acteur) acttiers where tmp.id=1300 and acttiers.id in (select * from table(pack_tmp.ACTTIER((select id from tmp tmp2 where tmp2.id=tmp.id))))
Est-ce que quelqu'un peut m'expliquer ce que je fais mal et comment optimiser pour pouvoir utiliser la 2ème ou 3ème écriture car bien évidemment, je souhaite interroger sur plusieurs enregistrements de tmp.
merci d'avance pour vos éclaircissements.
Partager