sql union на * similiar * значение столбца - PullRequest
0 голосов
/ 24 мая 2018

В базе данных sqlite3 у меня есть несколько таблиц, которые содержат имена компьютеров.

a.name, b.name, c.hostname, d.addr_host

Мне нужно собрать все имена хостов для подзапроса.Тем не менее, эти таблицы имеют общие значения имен И некоторые из таблиц имеют имена, которые похожи, например, на

 1. a.name = machine001
 2. b.name = machine001.domainname

Можно ли создать один столбец из всех имен хостов, используя запрос?

1 Ответ

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

Полагаю, вы просто хотите:

select a.name as hostname from a
union -- intentionally eliminate duplicates
select b.name from b
union
select c.hostname from c
union
select d.addr_host from d;

Если вы хотите, чтобы имя было только первым '.', тогда:

select substr(a.name, 1, instr(a.name || '.', '.') - 1) as hostname from a
union -- intentionally eliminate duplicates
select substr(b.name, 1, instr(b.name || '.', '.') - 1) from b
union
select substr(c.hostname, 1, instr(a.name || '.', '.') - 1) from c
union
select substr(d.addr_host, 1, instr(d.addr_host || '.', '.') - 1) from d;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...