PostgreSQL | Как добавить дополнительный столбец в результат SELECT или VIEW генерируемый на основе других столбцов?

PostgreSQL | Как добавить дополнительный столбец в результат SELECT или VIEW генерируемый на основе других столбцов?

У нас имеется связующая таблица из идентификаторов первичных ключей по другим трём таблицам:

SELECT * FROM a.t_d;

Скриншот таблицы:

Связующая таблица из трёх внешних ключей - PostgreSQL
Связующая таблица из трёх внешних ключей — PostgreSQL

 

Мы делаем соединение JOIN для визуального представления данных:

Выполнили Соединение JOIN 4 таблиц в одну по внешним ключам в PostgreSQL
Выполнили Соединение JOIN 4 таблиц в одну по внешним ключам в PostgreSQL

Мы извлекаем строковые значения из трёх таблиц и подставляем их в результирующую таблицу по идентификаторной привязке.

В результате мы видим что-то похожее на доменное имя (на адрес сайта).

И в этот момент нас посещает мысль, что неплохо бы как-то склеить эти строки и показать склеенный результат в отдельном столбце для будущих вычислений. В общем сделать так, чтобы у нас была одна Строка данных.

 

Решение задачи

В решении задачи по добавлению нового столбца в SELECT в PostgreSQL нам поможет функция concat(), которая умеет работать со строковым типом данных.

Наше выражение конкатенации строк будет выглядеть так:

concat (t_uri_schemes.scheme, '://', t_dname.dname, '.', t_root_zone.zone)

Мы используем названия столбцов и обычные строковые вставки.

После конкатенации нам нужно как-то назвать этот результат. Нужно назвать столбец, в который пойдёт этот результат:

concat (t_uri_schemes.scheme, '://', t_dname.dname, '.', t_root_zone.zone) AS "Домен"

Мы добавляем ключевое слово AS после которого пишем название для нашего столбца сгенерированного результата — это название «Домен». Мы заключаем его в двойные кавычки, потому что есть заглавная буква.

Итоговый код запроса SELECT:

— SELECT и JOIN с добавлением несуществующего столбца генерируемого автоматически

 

SELECT

    t_d.id «Идентификатор домена»,

    t_uri_schemes.scheme «URI-Схема«,

    t_dname.dname «Имя домена«,

    t_root_zone.zone «Корневая зона«,

    concat(t_uri_schemes.scheme, ‘://’, t_dname.dname, ‘.’, t_root_zone.zone) AS «Домен«

FROM a.t_d

JOIN a.t_uri_schemes ON s = t_uri_schemes.id

JOIN a.t_dname ON d = t_dname.id

JOIN a.t_root_zone ON r = t_root_zone.id;

 

Результат запроса:

Получили дополнительный сгенерированный столбец на основе других в PostgreSQL через SELECT
Получили дополнительный сгенерированный столбец на основе других в PostgreSQL через SELECT

 

 

Информационные ссылки

Официальный сайт WEB-оболочки pgAdminhttps://www.pgadmin.org

Официальный сайт СУБД PostgreSQLhttps://www.postgresql.org

Раздел «Таблица 9.10. Другие строковые функции» — https://postgrespro.ru/docs/postgresql/14/functions-string#FUNCTIONS-STRING-OTHER