Создание запросов в СУБД Access
Рефераты >> Программирование и компьютеры >> Создание запросов в СУБД Access

Рис. 2.1. Примеры простой выборки

2.2.2. Исключение дубликатов

В предыдущем примере был выдан правильный, но не совсем удачный перечень основных продуктов: из него не были исключены дубликаты. Для исключения дубликатов и одновременного упорядочения перечня необходимо дополнить запрос ключевым словом DISTINCT (различный, различные), как показано в следующем примере: SELECT DISTINCT ОсноваFROM Блюда;

Результат приведен на рис. 2.1,в.

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

Из синтаксиса фразы SELECT (п.2.1) видно, что в ней может содержаться не только перечень столбцов таблицы или символ *, но и выражения.

Например, если нужно получить значение калорийности всех продуктов, то можно учесть, что при окислении 1 г углеводов или белков в организме освобождается в среднем 4.1 ккал, а при окислении 1 г жиров - 9.3 ккал, и выдать запрос: SELECT Продукт, ((Белки+Углев)*4.1+Жиры*9.3)FROM Продукты;

результат которого приведен на рис. 2.2,а.

а)

б)

в)

Продукт

 

Говядина

1928.1

Судак

1523.

Масло

8287.5

Майонез

6464.7

Яйца

1618.9

Сметана

3011.4

Молоко

605.1

Творог

1575.

Морковь

349.6

Лук

459.2

Помидоры

196.8

Зелень

118.9

Рис

3512.1

Мука

3556.7

Яблоки

479.7

Сахар

4091.8

Кофе

892.4

Продукт

 

Говядина

Калорий =

1928.1

Судак

Калорий =

1523.

Масло

Калорий =

8287.5

Майонез

Калорий =

6464.7

Яйца

Калорий =

1618.9

Сметана

Калорий =

3011.4

Молоко

Калорий =

605.1

Творог

Калорий =

1575.

Морковь

Калорий =

349.6

Лук

Калорий =

459.2

Помидоры

Калорий =

196.8

Зелень

Калорий =

118.9

Рис

Калорий =

3512.1

Мука

Калорий =

3556.7

Яблоки

Калорий =

479.7

Сахар

Калорий =

4091.8

Кофе

Калорий =

892.4

Продукт

 

Зелень

118.9

Помидоры

196.8

Морковь

349.6

Лук

459.2

Яблоки

479.7

Молоко

605.1

Кофе

892.4

Судак

1523.

Творог

1575.

Яйца

1618.9

Говядина

1928.1

Сметана

3011.4

Рис

3512.1

Мука

3556.7

Сахар

4091.8

Майонез

6464.7

Масло

8287.5

Рис. 2.2. Примеры запросов с вычисляемыми полями

Фраза SELECT может включать не только выражения, но и отдельные числовые или текстовые константы. Следует отметить, что текстовые константы должны заключаться в апострофы ('). На рис. 2.2,б приведен результат запроса: SELECT Продукт, 'Калорий =', ((Белки+Углев)*4.1+Жиры *9.3) FROM Продукты;

А что произойдет, если какой-либо член выражения не определен, т.е. имеет значение NULL и каким образом появилось такое значение?

Если при загрузке строк таблицы в какой-либо из вводимых строк отсутствует значение для какого-либо столбца, то СУБД введет в такое поле NULL-значение. NULL-значение "придумано" для того, чтобы представить единым образом "неизвестные значения" для любых типов данных. Действительно, так как при вводе данных в столбец или их изменении СУБД запрещает ввод значений не соответствующих описанию данных этого столбца, то, например, нельзя использовать пробел для отсутствующего значения числа. Нельзя для этих целей использовать и ноль: нет месяца или дня недели равного нулю, да и для чисел ноль не может рассматриваться как неизвестное значение в одном месте и как известное - в другом. При выводе же NULL-значения на экран или печатающее устройство его код воспроизводится каким-либо специально заданным символом или набором символов: например, пробелом (если его нельзя перепутать с текстовым значением пробела) или сочетанием -0-.

С помощью специальной команды можно установить в СУБД один из режимов представления NULL-значений при выполнении числовых расчетов: запрет или разрешение замены NULL-значения нулем. В первом случае любое арифметическое выражение, содержащее неопределенный операнд, будет также иметь неопределенное значение. Во втором случае результат вычислений будет иметь численное значение (если это значение попадает в диапазон представления соответствующего типа данных).

Например, при выполнении запроса SELECT ПР, Цена, К_во, (Цена * К_во)FROM Поставки;

и разных "настройках" СУБД могут быть получены разные результаты:

ПР

Цена

К_во

(Цена*К_во)

9

-0-

-0-

-0-

11

1.5

50

75.

12

3.

10

30.

15

2.

170

340.

ПР

Цена

К_во

(Цена*К_во)

9

-0-

-0-

0.

11

1.5

50

75.

12

3.

10

30.

15

2.

170

340.


Страница: