объединить две таблицы на основе частичного совпадения строк - PullRequest
0 голосов
/ 02 июля 2018

У меня есть две таблицы, в которых я сохраняю количество таблиц в кусте хэддопа. Столбцы таблицы 1: дата, таблица, количество (имя таблицы в нижнем регистре)

01/07/2018 base1.tablename1 300
01/07/2018 base1.tablename2 100 ...

Моя вторая таблица имеет ту же форму: дата, таблица, количество (где имя таблицы в верхнем регистре

02/07/2018 TABLENAME1 200
02/07/2018 TABLENAME2 10

Я хотел бы иметь новую таблицу

Tablename_T1 tablename_T2 CountT1 CountT2 DateT1 DateT2 TABLENAME1 tablename1 300 200 01/07/18 02/07/2018 TABLENAME2 tablename2 100 0 01/07/18 02/07/2018

Я пробовал этот запрос, но он не работает

select * from count_tables a, count_tables2 b where a.tablenamelike concat('%',b.tablename,'%')

Спасибо

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Использование функции instr()

select *
  from count_tables  a
       inner join count_tables2 b on a.datet1=b.datet2
 where instr(a.tablename,b.tablename) > 0

Добавьте даты в условие объединения on a.datet1=b.datet2, если вы не хотите дублировать каждую дату из таблицы a на каждую дату из таблицы b.

Также можно использовать функцию locate(string substr, string str[, int pos]):

where locate(b.tablename, a.tablename) > 0
0 голосов
/ 02 июля 2018

Если a.nom_table имеет предсказуемый порядок, то мы можем написать как

select *
from count_tables a, count_tables2 b
where substr(a.nom_table,7,length(a.nom_table))=lower(b.nom_table)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...