Должны быть вставлены агрегированные столбцы, но отдельные термины

#oracle #distinct #aggregate #string-aggregation

#Oracle #различные #агрегат #строка-агрегация

Вопрос:

У меня есть две таблицы, и я хочу их объединить

 TERMS_TABLE

 ID  | TERMS
 309 | 'hardware'
 309 | 'software'
 309 | 'computer'



TFIDF_TABLE

  ID | TERMS
 309 |'computer,phone,mp3....'
 

Теперь я хочу добавить столбец ТЕРМИНОВ TERMS_TABLE в столбец TFIDF_TABLE терминов, но если TFIDF_TABLE уже содержит ТЕРМИНЫ TERMS_TABLE, тогда я не должен вставлять этот термин в NEW_TFIDF_TABLE , например

результат должен быть:

 NEW_TFIDF_TABLE

  ID | TERMS
 309 |'computer,phone,mp3....,hardware,software'
 

Как я могу это сделать?

Ответ №1:

Если вы используете Oracle 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
 

Комментарии:

1. Почему существует 4 таблицы t1, t2, t3, t4? У меня есть только две таблицы и таблица результатов