Выборка вычисляемых значений

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

Чтобы включить в запрос функцию поля или выражение, необходимо:

1) в окне конструктора запросов активизировать вкладку Fields;

2) с помощьюманипулятора «мышь» или клавиши Tab перейти в поле «Functions and expressions»

3) в этом поле ввести выражение для вычисления или нажать кнопку вызова построителя выражения, расположенную с правой стороны поля,

4) в окне диалога Expression Builder создать выражение для вычисляемого поля.

5) нажать кнопку Addдля переноса данного выражения в список выходных полей запроса.

Пример 1. Пусть в некоторой базе данных содержится таблица Товары, в которой цена (UNITPRICE) указана без учёта налога на добавленную стоимость (НДС). Поля таблицы Товары представлены в таблице 1. Тип переменной UNITPRICE – Currency.

Таблица 1 – Поля таблицы Товары

Kod1 UNITPRICE
1000.0000
2000.0000
10000.0000

Необходимо организовать выборку информации из таблицы Товары,указавцены с учетом налога на добавленную стоимость (18%).

SQL-запрос, соответствующий примеру 1:

SELECT Kod1, UNITPRICE * (1 + 0,18) AS ЦЕНА FROM Товары

Результат выполнения данного запроса представлен в таблице 2.

Таблица 2 – Результат выборки из таблицы Товары

Kod1 ЦЕНА
1180.0000
2360.0000
11800.0000

В запросе после ключевого слова ASзаписано новое название столбца таблицы.

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

Если в SQL-запрос, соответствующий примеру 1, добавить строку «Цена указана с учетом НДС», то онпримет вид:

SELECT Kod1, UNITPRICE * (1 + 0,18) AS ЦЕНА, «Цена указана с учетом НДС» FROM Товары

Результат выполнения данного запроса представлен в таблице 3.

Таблица 3 – Результат выполнения запроса

Kod1 ЦЕНА Цена указана с учетом НДС
1180.0000 Цена указана с учетом НДС
2360.0000 Цена указана с учетом НДС
11800.0000 Цена указана с учетом НДС

При выборке с помощью команды SELECT можно использовать статистические функции:

1) MIN(X) – вычисляет минимальное значение из множества X;

2) MAX(X) – вычисляет максимальное значение из множества X;

3) AVG(X) – вычисляет среднее арифметическое из множества значений X;

4) SUM(X) – вычисляет сумму значений множества X;

5) COUNT(X) – определяет число элементов множества X.

Примеры использования этих функций:

1)SELECT COUNT(*) FROM GOODS – создает выборку, состоящую из одной строки и одного поля, содержащего количество всех строк таблицы GOODS (товары);

2) SELECT MAX(Цена), MIN(Цена), AVG(Цена) FROM GOODS – создает выборку, состоящую из одной строки и трех полей, содержащих минимальное значение цены, максимальное значение цены и её среднее значение.

Выборка с условием

Для задания условия выборки в SQL-запросе используется команда (ключевое слово) WHERE.Условие, следующее за ключевым словом WHERE, может включать:

1) арифметические операторы сравнения: =, <>, > , <, >=, <=;

2) логические операторы – AND, OR, NOT;

3) скобки, определяющие порядок вычислений.

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

Пример 2. Пусть существует некоторая база данных, в которой имеется таблица Table3, содержащая информацию о поставщиках, покупателях, товарах. Предполагается, что покупатель может приобретать товар в кредит. Произвести из данной базы выбор всех кодов (kod) и фамилий (NAME)покупателей, которые находятся в Москве и имеют кредит(CREDITLIMIT) более 200 000.

С помощью языка SQL запрос, соответствующий примеру 1, можно представить в виде:

SELECT kod, NAME

FROM Table3

WHERE CITY=“Москва”

AND CREDITLIMIT>200000

Выборка с упорядочением

ВкладкаOrdered Byв окне дизайнера запросов позволяет управлять порядком расположения записей в результирующей таблице. Для упорядочивания выделите указателем (курсором) поля, которые будут определять порядок сортировки выбранных данных, и перенесите их последовательно в список Ordering criteria.Для каждого выбранного поля можно с помощью переключателя (кнопки) Order optionsустановить критерий упорядочивания по возрастанию (Ascending) или по убыванию (Descending).

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

Пример 3.Для таблицы Table3из примера 1 необходимо произвести выбор кода (kod), имени (NAME)и суммы кредита (CREDITLIMIT) всех покупателей, проживающих в Ставрополе, расположив их в порядке убывания.

SQL-запрос, реализующий пример 3, имеет вид:

Наши рекомендации