SELECT Дата, Блюдо, SUM(Количество_порций) AS Количество_порций
FROM Заказы
WHERE Блюдо = 15
GROUP BY Дата, Блюдо;
будет работать быстрее, так как будут заранее (до группировки и вычисления функции) отброшены ненужные строки.
Пример 16.
Вывести названия блюд, у которых количество заказанных порций в день превышает 5:
SELECT Дата, Блюдо, SUM(Количество_порций) AS Кол_порций
Результат
Дата
Блюдо
Кол_порций
2011-01-02
2011-01-02
FROM Заказы
GROUP BY Дата, Блюдо
HAVING SUM(Кол_порций) > 5;
Для данного запроса эквивалентного с предложением WHERE не существует.
Примеры запросов с использованием нескольких таблиц.
Типичен вопрос: как же получить сведения о том, какие продукты необходимы для приготовления того или иного блюда, какова его калорийность и стоимость, если нужные данные "рассыпаны" по нескольким различным таблицам? Не лучше ли иметь одну большую таблицу, содержащую все сведения базы данных «Ресторан»?
База данных - это множество взаимосвязанных сущностей или отношений (таблиц) в терминологии реляционных СУБД. При проектировании стремятся создавать таблицы, в каждой из которых содержалась бы информация об одном и только об одном типе сущностей. Это облегчает модификацию базы данных и поддержание ее целостности. Даже при отсутствии средств одновременного доступа ко многим таблицам нежелателен проект, в котором информация о многих типах сущностей перемешана в одной таблице. SQL же обладает великолепным механизмом для одновременной или последовательной обработки данных из нескольких взаимосвязанных таблиц. В нем реализованы возможности "соединять" или "объединять" несколько таблиц и так называемые "вложенные подзапросы".