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

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] таблиц Блюда, Продукты и Состав (условие соединения - равенство значений номеров блюд и значений номеров продуктов). Затем выделяются строки, у которых в столбце Основа хранится слово Овощи, и из этих строк - столбцы Блюдо, Продукт и Вес.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: