объединить два столбца со схожими словами inner join
У меня есть две таблицы: books и newspaper
в них есть столбец books_name и newspaper_title
Я их объединил следующим образом
Select * FROM books b
inner join newspaper n on b.books_name = n.newspaper_title
но я хочу дополнить inner join, чтобы находил схожие слова.
Например
b.name Гарри Поттер и узник Азкабана и n.title Принц Гарри отказался от титула
Ответы (1 шт):
Автор решения: Akina
→ Ссылка
не могли ли бы вы на примере показать
CREATE TABLE t1 (id INT, txt VARCHAR(255)); CREATE TABLE t2 (id INT, txt VARCHAR(255)); INSERT INTO t1 VALUES (1, 'word1 word2 word3'), (2, 'word4 word5'); INSERT INTO t2 VALUES (123, 'word6 word5 word2'), (456, 'word3 word1'); GO
WITH cte1 AS ( SELECT t1.id, t11.value FROM t1 CROSS APPLY STRING_SPLIT (t1.txt, ' ') t11 ), cte2 AS ( SELECT t2.id, t21.value FROM t2 CROSS APPLY STRING_SPLIT (t2.txt, ' ') t21 ) SELECT t1.txt t1_txt, t2.txt t2_txt, STRING_AGG(cte1.value, ',') common_words FROM cte1 JOIN cte2 ON cte1.value = cte2.value JOIN t1 ON t1.id = cte1.id JOIN t2 ON t2.id = cte2.id GROUP BY t1.txt, t2.txt;
t1_txt t2_txt common_words word1 word2 word3 word3 word1 word1,word3 word1 word2 word3 word6 word5 word2 word2 word4 word5 word6 word5 word2 word5
db<>fiddle here