объединить таблицы на основе частичной строки sql - PullRequest
0 голосов
/ 04 августа 2020

У меня две таблицы:

региональные

enter image description here

imd

введите описание изображения здесь

Регион содержит столбец местоположения с информацией о городах Великобритании. Таблица imd содержит столбец «Имя», который также включает названия городов.

Я хочу объединить обе таблицы в зависимости от местоположения и имени, но в региональной таблице местоположение также включает имя страны, тогда как таблица imd содержит только название города. Я хочу объединить таблицы на основе частичного совпадения строк. Я пробовал следующий код, но он не работает.

SELECT *
FROM s.regional, s.imd
WHERE s.regional.location like concat('%',s.imd.Name)

1 Ответ

0 голосов
/ 04 августа 2020

Вы можете взять первую часть поля [местоположение] в таблице [регион] перед запятой и присоединить ее к столбцу [имя] в таблице [imb] следующим образом:

SELECT a.*,b.*
FROM s.regional a LEFT JOIN s.imb b ON SPLIT_PART(a.location, ',', 1)  = b.[name]

В идеале вы должны переместить поле [location] в его собственную таблицу, где у вас могут быть столбцы, такие как city, Country и c, и создать ссылку на эту таблицу (внешний ключ). Это упростит обслуживание (вставка / обновление / удаление) ваших таблиц в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...