В Postgres, как вы можете сопоставить строку со столбцами в других таблицах? Для каждой строки в столбце Таблицы I string
найдите все строки в Таблице II и Таблице III на предмет совпадений и верните их /
сцепленные.
Моя цель - извлечь слова соответствия и структуры соответствия из строкового ввода.
Таблица I: Строки
string | match_words | match_structures
---------------------------------------------------
Hi, my name is dan | |
Таблица II: Слова
word
----------
hello
hi
bird
name
Таблица III: Структуры
structure
----------
hi, my name is
hello, my
how are you?
my is
Желаемый результат: Таблица I: Строки
string | match_words | match_structures
---------------------------------------------------
Hi, my name is dan | hi/name | hi, my name is/my is
Попытки:
Использование iLike: я получаю первое совпадение hi
, но не все совпадения подстрок:
update dialog set match_words = word from words where string ilike '%' || word || '%';
Дает мне
string | match_words | match_structures
---------------------------------------------------
Hi, my name is dan | hi |
Делая выбор, я могу связать полную строку с отдельными словами, что, я думаю, противоположно тому, что я хочу:
select string, word, structure from dialog left join words on (string ilike '%' || word || '%') left join structures on (string ilike '%' || structure || '%');
string | word | structure
--------------------+------+----------------
Hi, my name is dan | hi | hi, my name is
Hi, my name is dan | name | hi, my name is
Это все еще отсутствует структура my ____ is