SELECT Продукт, Белки, Жиры, Углев, ((Белки+Углев)*4.1+Жиры*9.3) FROM Продукты WHERE Продукт IN ('Морковь','Лук','Помидоры','Зелень');
|
и получить на экране следующий результат его реализации:
Продукт
| Белки
| Жиры
| Углев
| ((Белки+Углев)*4.1+Жиры*9.3)
|
Морковь
| 13.
| 1.
| 70.
| 349.6
|
Лук
| 17.
| 0.
| 95.
| 459.2
|
Помидоры
| 6.
| 0.
| 42.
| 196.8
|
Зелень
| 9.
| 0.
| 20.
| 118.9
|
В последнем столбце этой рабочей таблицы приведены данные о калорийности продуктов, отсутствующие в явном виде в базовой таблице Продукты. Эти данные вычислены по хранимым значениям основных питательных веществ продуктов, помещены в рабочую таблицу и будут существовать до момента смены изображения на экране. Однако если необходимо сохранить эти данные в какой-либо базовой таблице, то существует предложение (INSERT), позволяющее переписать содержимое рабочей таблицы в указанные столбцы базовой таблицы (реляционная операция присваивания).
Часто пользователя не устраивает как способ описания нужного набора выводимых строк, так и результат выполнения запроса, сформированного из данных одной таблицы. Ему хотелось бы уточнить выводимые (запрашиваемые) данные сведениями из других таблиц.
Например, в запросе на получение состава овощных блюд
SELECT БЛ,ПР,Вес FROM Состав WHERE БЛ IN (1,3,17,23);
|
пришлось перечислять номера этих блюд, так как в таблице Состав нет данных об основных продуктах блюда (они есть в таблице Блюда). Полученный состав овощных блюд (рис.1.3,а) оказался "слепым": в нем и блюда и продукты представлены номерами, а не именами. Удобнее и нагляднее (рис.1.3,б)
а)
| БЛ
| ПР
| Вес
| Блюдо
|
|
|
| Салат летний
|
|
|
| Салат летний
|
|
|
| Салат летний
|
|
|
| Салат летний
|
|
|
| Салат витаминный
|
|
|
| Салат витаминный
|
|
|
| Салат витаминный
|
|
|
| Салат витаминный
|
|
|
| Салат витаминный
|
|
|
| Салат витаминный
|
|
|
| Морковь с рисом
|
|
|
| Морковь с рисом
|
|
|
| Морковь с рисом
|
|
|
| Морковь с рисом
|
|
|
| Морковь с рисом
|
|
|
| Морковь с рисом
|
|
|
| Помидоры с луком
|
|
|
| Помидоры с луком
|
|
|
| Помидоры с луком
|
| б)
| Продукт
| Вес
| Помидоры
|
| Яблоки
|
| Зелень
|
| Майонез
|
| Помидоры
|
| Яблоки
|
| Сметана
|
| Зелень
|
| Лук
|
| Сахар
|
| Морковь
|
| Молоко
|
| Рис
|
| Масло
|
| Зелень
|
| Мука
|
| Помидоры
|
| Лук
|
| Масло
|
|
|
Рис. 1.3. Состав овощных блюд базы данных ПАНСИОН
запрос сформированный по трем таблицам:
SELECT Блюдо, Продукт, Вес FROM Состав,Б люда, Продукты WHERE Состав.БЛ = Блюда.БЛ AND Состав.ПР = Продукты.ПР AND Основа = 'Овощи';
|
В нем для получения рабочей таблицы выполняется естественное соединение [2] таблиц Блюда, Продукты и Состав (условие соединения - равенство значений номеров блюд и значений номеров продуктов). Затем выделяются строки, у которых в столбце Основа хранится слово Овощи, и из этих строк - столбцы Блюдо, Продукт и Вес.