私は2つのテーブルがあり、それらをマージしたい
TERMS_TABLE
ID | TERMS
309 | "hardware"
309 | "software"
309 | "computer"
TFIDF_TABLE
ID | TERMS
309 |"computer,phone,mp3...."
今、TERMS列を追加したい TERMS_TABLE
の用語列に TFIDF_TABLE
TFIDF_TABLEに既にTERMS_TABLEのTERMSが含まれている場合、この用語をNEW_TFIDF_TABLEに挿入しないでください
結果は次のようになります。
NEW_TFIDF_TABLE
ID | TERMS
309 |"computer,phone,mp3....,hardware,software"
どうやってやるの ?
回答:
回答№1は2Oracle 11を使用している場合は、これを試すことができます:
select t3.id, t3.terms||","||t4.terms terms from
(
select t1.id, listagg(t1.terms,",") within group (order by t1.terms) terms
from terms_table t1 join tfidf_table t2 on t1.id=t2.id
where instr(t2.terms,t1.terms)=0
group by t1.id )
t3 right outer join tfidf_table t4 on t3.id=t4.id
Oracle 10では、試してみることができます
select t3.id, t3.terms||","||t4.terms terms from
(
select t1.id, wm_concat(t1.terms) terms
from terms_table t1 join tfidf_table t2 on t1.id=t2.id
where instr(t2.terms,t1.terms)=0
group by t1.id )
t3 right outer join tfidf_table t4 on t3.id=t4.id