欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

oracle查询解决思路

更新时间: 2014-01-05 02:13:52 责任编辑: Author_N1

 

ORACLE查询
表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


--参考方法--
你第一次给我们的数据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;



还不行????
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:13:52
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/7247/
本文WWW.DOC100.NET DOC100.NET版权所有。