SQL - сортировка вычисляемого поля
|
У молодого хакера спрашивают:
- Максим, ну что тебе нравится, кроме женщин и компьютеров?
- Как что? Девушки и калькуляторы.
|
Иногда схема данных требует, чтобы набор данных имел вычисляемый результат. В
приложениях Delphi в случае использования SQL это возможно, но эта технология
немного разнится в зависимости от используемого типа данных.
Для локального SQL, включая таблицы Paradox и dBASE, вычисляемому полю дают
имя с использованием ключевого слова AS. При этом допускается ссылаться на такое
поле для задания порядка сортировки с помощью ключевой фразы ORDER BY в
SQL-запросе. Например, используя демонстрационную таблицу ITEMS.DB: SELECT I."PARTNO", I."QTY", (I."QTY" * 100) AS TOTAL
FROM "ITEMS.DB" I
ORDER BY TOTAL В данном примере вычисляемому полю было присвоено имя
TOTAL (временно, только для ссылки), после чего оно стало доступным в
SQL-запросе для выражения ORDER BY.
Вышеуказанный метод не поддерживается в InterBase. Тем не менее, сортировать
вычисляемые поля в таблицах InterBase (IB) или сервере Local InterBase Server
все же возможно. Вместо использования имени вычисляемого поля, в выражении ORDER
BY используется порядковое число, представляющее собой позицию вычисляемого поля
в списке полей таблицы. Например, используя демонстрационную таблицу EMPLOYEE
(расположенную в базе данных EMPLOYEE.GDB): SELECT EMP_NO, SALARY, (SALARY / 12) AS MONTHLY
FROM EMPLOYEE
ORDER BY 3 DESCENDING В то время, как таблицы IB и LIBS используют второй
метод, и не могут воспользоваться первым, оба метода доступны при работе с
локальным SQL. К примеру, используя SQL-запрос для таблицы Paradox, и
приспосабливая его для работы с относительной позицией вычисляемого поля, а не
его именем: SELECT I."PARTNO", I."QTY", (I."QTY" * 100) AS TOTAL
FROM "ITEMS.DB" I
ORDER BY 3
|