连接两个表,其中一列包含另一个表的多个条目
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了连接两个表,其中一列包含另一个表的多个条目相关的知识,希望对你有一定的参考价值。
我有以下问题。我想加入两张桌子。
第一个表包含如下条目:
T1
PK Info
1 one
2 two
3 three
第二个表是这样构建的:
T2
PK FKT1
1 1,3
2 1,2,3
3 2
我的结果应显示以下内容
PK2 FKT1 InfoT1
1 1,3 One,Three
2 1,2,3 One,two,Three
3 2 Two
我只是不知道如何解决这个问题。
这可能只使用sql选择还是需要的功能?
亲切的问候
答案
这并不困难,但是 - 正如你被告知的那样,你宁愿不这样做。
SQL> with
2 t1 (pk, info) as
3 (select 1, 'one' from dual union
4 select 2, 'two' from dual union
5 select 3, 'three' from dual
6 ),
7 t2 (pk, fkt1) as
8 (select 1, '1,3' from dual union
9 select 2, '1,2,3' from dual union
10 select 3, '2' from dual
11 ),
12 t2rows as
13 (select pk, regexp_substr(fkt1, '[^,]+', 1, column_value) fkt1, column_value rn
14 from t2,
15 table(cast(multiset(select level from dual
16 connect by level <= regexp_count(fkt1, ',') + 1
17 ) as sys.odcinumberlist))
18 )
19 select t2r.pk,
20 listagg(t2r.fkt1, ',') within group (order by t2r.rn) fkt1,
21 listagg(t1.info, ',') within group (order by t2r.rn) infot1
22 from t2rows t2r join t1 on t2r.fkt1 = t1.pk
23 group by t2r.pk
24 order by t2r.pk;
PK FKT1 INFOT1
---------- -------------------- --------------------
1 1,3 one,three
2 1,2,3 one,two,three
3 2 two
SQL>
以上是关于连接两个表,其中一列包含另一个表的多个条目的主要内容,如果未能解决你的问题,请参考以下文章