Базы данных

Предложения having и where


Чтобы включить в результат название и жанр, пришлось включить эти атрибуты р предложение group by. Включение этих атрибутов‘не повлияло на результаты группировки, поскольку атрибут movield (Id фильма) является ключом таблицы Movie, т.е. каждый фильм имеет единственное название и относится к единственному жанру. Включение этих атрибутов в предложение group by выглядит излишним, вероятно, так оно и есть. Тем не менее, в языке SQL требуется их включение.

Оба предложения having и where используются для ограничения запроса. Предложение where налагает ограничения на кортежи, помещаемые в группы. Только кортежи, удовлетворяющие предложению where, используются для формирования групп. После того как группы сформированы, предложение having определяет, какие из них используются при создании результирующих кортежей. Только группы, удовлетворяющие предложению having образуют результирующие кортежи.

На 7.7 показано представление, используемое СУБД Microsoft Access для запроса, изображенного на 7.6 и в 7.4. В перечне полей появилась новая строка Total для хранения итога. Чтобы она появилась, надо щелкнуть правой кнопкой мыши на поле I, а затем на кнопке I Totals. Различные поля этой строки имеют значения Group By, Sum, Avg и Expression. Перечень полей со значениями Group By совпадает с перечнем, заданным в предложении group by на 7.6. Предложение having представлено третьим полем (со значением Expression). В строке критерия стоит >=2, т.е. по крайней мере два проката для фильма. Последнее поле определяет group by movield.

ключевое слово inner join, и этим отличается от 7.6. Если SQL- оператор, изображенный на 7.6, поместить в качестве SQL-представленйя нового запроса в Access, то итоговое представление не будет содержать линии соединения, показанные на 7.7. Вместо этого условия соединения, указанные в запросе в предложении where, появятся в строке критериев (Criteria) списка полей (Field). Это говорит о том, что СУБД Access не полностью понимает язык SQL или по крайней мере имеет очень примитивный оптимизатор запросов.2 Запрос, показанный на 7.7, создан с помощью QBE, а не непосредственно из окна SQL-оператора.

Комментарии закрыты