сопоставить столбец строк со столбцами в других таблицах - PullRequest
0 голосов
/ 01 мая 2018

В 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

1 Ответ

0 голосов
/ 01 мая 2018

сначала вы должны использовать подстроку вам нужно взять таблицу 1 и разделить каждое значение строки строки в массиве строк второе - сделать то же самое с таблицей 2 третий - сравнить ваши таблицы вам нужно будет использовать как два цикла для проверки каждой позиции массива 1 с массивом 2

https://www.postgresql.org/docs/8.1/static/functions-string.html https://w3resource.com/PostgreSQL/substring-function.php

...