[9.2] Vue avec fonction de Concaténation : Probléme
:D
une requete qui me dépasse avec une fonction de concaténation à l'intérieur :arf:
3 tables T1 T2 T3,t outes liées par le champ ID
T1 et T3 les enregistrements de valeur ID sont uniques
T2 les enregistrements de valeur ID peuvent être multiple
une vue V_T1T2T3:
Code:
1 2 3 4
| select T1_3.ins,T1_T3.id,T3.idp,T1_3.zone
from
(select T1.id id,T1.ins inS,concatenate_list(CURSOR(SELECT LIBELLE FROM T2 WHERE T1.id = T2.id)) zone from T1) T1_3
left join T3 on T1_3.id = T3.id |
une focntion concatenate_list :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| (p_cursor IN SYS_REFCURSOR)
RETURN VARCHAR2
IS
l_return VARCHAR2(32767);
l_temp VARCHAR2(32767);
BEGIN
LOOP
FETCH p_cursor
INTO l_temp;
EXIT WHEN p_cursor%NOTFOUND;
l_return := l_return || ', ' || l_temp;
END LOOP;
CLOSE p_cursor;
RETURN LTRIM(l_return, ', ');
END; |
qui fonctionne trés bien...
si je passe :
Code:
1 2
|
select * from V_T1T2T3 where ins = '66'; |
le résultat est nickel, le champ concaténé aussi... (j'attire votre attention sur le fait que ins dépend de l'identifiant T1_3 soit de T1 au final)
si je passe :
Code:
1 2
|
select * from V_T1T2T3 where idp = 'AB'; |
(j'attire votre attention sur le fait que idp dépend de T3)
C'est la catastrophe, ca ne tient pas compte du Where... et tout est renvoyé !
sauf truc bizarre ds ce qui est renvyé seul les idp de la clause Wher sont renseignés !!
les autres idp sont vides !!!
Je suis paumé
Merci d'avance si quelqu'un peut se pencher sur ce maquis
PS : je peux pas utiliser GROUP BY pour la concaténation car j'ai un champ de type BLOB à remonter sur une requête de ce modèle....
Lunab54