表TB1:里面有个字段是另外一个表TB2的ID字符串组,用,号分开的,比如1,2,3,4
问题:如何根据TB1的这个ID列字段查询出TB2ID对应的用户名,并且也是用,号分开
比如
TB1 字段 TID 1,2,3,4
TB2
1 用户名1
2 用户名2
3 用户名3
4 用户名4
查询出来要组成这样 用户名1,用户名2,用户名3,用户名4
ORACLE
------解决方案--------------------
你第一次给我们的数据TB1和TB2刚好相反啊,
如下:


SELECT T3.ID, LTRIM(MAX(SYS_CONNECT_BY_PATH(T3.NAME, ',')), ','), T3.MEMO
FROM (SELECT ROW_NUMBER() OVER(PARTITION BY T2.RNUM ORDER BY T1.NAME) RN,
T1.NAME,
T2.RNUM,
T2.ID,
T2.MEMO
FROM TB1 T1,
(SELECT T.ID,
T.RNUM,
REGEXP_SUBSTR(T.TB1ID, '[^,]+', 1, LEVEL) STR,
T.MEMO
FROM (SELECT T.ID, T.TB1ID, ROWNUM RNUM, T.MEMO FROM TB2 T) T
CONNECT BY LEVEL <=
(LENGTH(T.TB1ID) -
LENGTH(REPLACE(T.TB1ID, ',', ''))) / LENGTH(',') + 1
AND PRIOR RNUM = RNUM
AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL) T2
WHERE T1.ID = T2.STR) T3
START WITH T3.RN = 1
CONNECT BY PRIOR RN = RN - 1
AND PRIOR T3.RNUM = T3.RNUM
GROUP BY T3.RNUM, T3.ID, T3.MEMO;

还不行????