Создание вычисляемых полей

До сих пор с помощью операторов SELECT мы отображали только содержащиеся в таблицах данные. Это полезно, но не всегда достаточно. Вам может понадобиться общая сумма, среднее значение или результаты других расчетов, основанные на данных, имеющихся в таблице. Именно здесь помогут вычисляемые поля. В отличие от всех выбранных нами ранее столбцов, вычисляемых полей на самом деле в таблице базы данных нет. Они создаются "на лету" оператором SELECT.

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

В общем случае для создания вычисляемого поля в списке SELECT следует указать некоторое выражение языка SQL. В этих выражениях могут применяться операции сложения, вычитания, умножения и деления, а также встроенные функции СУБД. При построении сложных выражений могут использоваться круглые скобки.

IDevice IconПример
SQL:
SELECT service, price, price*1.5

FROM tbl_service

Представленный запрос возвращает список услуг, с указанием их текущей стоимости и стоимости, увеличенной на 50%.

Результат:

service price price*1.5
Equipment rental 200,00 300.00
Calling card service 100,00 150.00
Wireless service 150,00 225.00
Multiple lines 320,00 480.00
Voice mail 50,00 75.00
Paging service 50,00 75.00
Internet 250,00 375.00
Caller ID 20,00 30.00
Call waiting 20,00 30.00
Call forwarding 20,00 30.00
3-way calling 100,00 150.00
Electronic billing 50,00 75.00

Получить список, содержащий имя, фамилию и возраст клиентов:

SQL:
SELECT lastname, name, TRUNCATE((TO_DAYS(CURRENT_DAY()) – TO_DAYS(d_birth)+364)/365,0)
FROM tbl_clients

При построении выражения для вычисления возраста были использованы встроенные функции SQL.


Использование псевдонимов

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

Для упрощения чтения и понимания результатов запроса можно переопределить заголовки столбцов. Чтобы получить необходимые имена заголовков, просто введите <column> <alias> или <column> as <alias> в списке выбора вместо обычных имен столбцов.

IDevice IconПример

Запрос из предыдущего примера можно переписать следующим образом:

SQL:
SELECT lastname, name,
TRUNCATE((TO_DAYS(CURRENT_DAY()) – TO_DAYS(d_birth)+364)/365,0) AS age
FROM tbl_clients