Структуризированный язык запросов (SQL)


Резюме


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

Например, пусть требуется получить калорийность и стоимость тех блюд, для которых:

  • есть все составляющие их продукты;
  • калорийность не превышает 400 ккал;
  • стоимость не превышает 1.5 рубля, а результат надо упорядочить по возрастанию калорийности блюд в рамках их видов.
  • Для этого можно дать запрос, показанный на рис. 3.2, позволяющий получить искомый результат в виде таблицы

    ВидБлюдо

    ГорячееПомидоры с лукомкалорий -244.60.44руб

    ГорячееБефстрогановкалорий -321.30.53руб

    ГорячееДраченакалорий -333.90.33руб

    ГорячееКаша рисоваякалорий -339.20.27руб

    ГорячееОмлет с лукомкалорий -354.90.36руб

    ДесертЯблоки печеныекалорий -170.20.30руб

    ДесертКрем творожныйкалорий -394.30.27руб

    ЗакускаСалат летнийкалорий -155.50.32руб

    ЗакускаСалат витаминныйкалорий -217.40.37руб

    ЗакускаТворогкалорий -330.00.22руб

    ЗакускаМясо с гарниромкалорий -378.70.62руб

    НапитокКофе черныйкалорий -7.10.05руб

    НапитокКомпоткалорий -74.40.14руб

    НапитокКофе на молокекалорий -154.80.11руб

    НапитокМолочный напитоккалорий -264.90.34руб

    СупСуп молочныйкалорий -396.60.22руб

    SELECT Вид, Блюдо, 'калорий -', (SUM(INT((Белки+Углев)*4.1+Жиры*9.3)*Вес/1000)), (SUM(Стоимость/К_во*Вес/1000)+MIN(Труд/100)),’руб’ FROM Блюда, Вид_блюд, Состав, Продукты, Наличие WHERE Блюда.БЛ = Состав.БЛ AND Состав.ПР = Продукты.ПР AND Состав.ПР = Наличие.ПР AND Блюда.В = Вид_блюд.В AND БЛ NOT IN ( SELECT БЛ FROM Состав WHERE ПР IN ( SELECT ПР FROM Наличие WHERE К_во = 0)) GROUP BY Вид, Блюдо HAVING SUM(Стоимость/К_во*Вес/1000+MIN(Труд/100)) < 1.5 AND SUM(((Белки+Углев)*4.1+Жиры*9.3)*Вес/1000) < 400 ORDER BY Вид, 4;




    Начало  Назад  Вперед



    Книжный магазин