Работа с запросами


Запросы в проектах Access являются более сложным понятием, чем в базах данных Access. Это понятие включает несколько разных объектов SQL Server: Представления (Views), Сохраненные процедуры (Stored Procedures) и Функции, определенные пользователем (User-defined Function). Все эти объекты могут быть созданы с помощью Конструктора запросов.
 
Конструктор запросов
Как видите, оно похоже на окно Конструктора запросов в базе данных Access. На верхней панели размещаются таблицы или запросы (в данном случае представления), являющиеся источником данных. Средняя панель представляет собой бланк запроса, который является трансформацией бланка запроса в базе данных Access (столбцы стали строками, а строки — столбцами). Различие между ними небольшое. Например, появился отдельный столбец Псевдоним (Alias), в котором можно задать псевдоним названия поля. Нижняя панель содержит текст инструкции SQL. соответствующий формируемому запросу.
Не всегда все панели видны на экране. Для управления отображением панелей служат три кнопки на панели инструментов.
Окно Конструктора запросов появляется, когда вы создаете новое представление, редактируете старое или создаете инструкцию SQL в свойстве Источник записей (Record Source) формы или отчета с помощью кнопки Построителя. Для добавления таблицы на панель Конструктора используется диалоговое окно Добавление таблицы (Show Table), но содержит три вкладки — Таблицы (Tables), Представления (Views) и Функции (Function). Окно Добавление таблицы (Show Table) появляется при нажатии на кнопку Добавить таблицу (Show Table) на панели инструментов. Создание представления аналогично созданию запроса в базе данных Access, поэтому мы не будем здесь описывать этот процесс полностью, а покажем только отличия от аналогичного процесса в базе данных.
Для того чтобы задать те или иные поля представления, их помечают в таблицах путем установки флажка у каждого поля. Одновременно эти поля появляются в бланке запроса и формируется инструкция SQL на панели SQL. Чтобы выбрать сразу все поля таблицы, нужно установить флажок * (все столбцы) (All Columns). Кроме того, поля могут перетаскиваться в бланк запроса мышью, как это делается в окне Конструктора запросов в базе данных Access.
Формирование критериев отбора записей аналогично формированию критериев в базе данных Access, однако выражения подчиняются синтаксическим правилам языка SQL Server.
 
Способы объединения таблиц в представлении
Так же как и в запросах в базе данных Access, можно создавать разные типы объединений таблиц:

  • внутренние, когда из обеих таблиц отбираются только те записи, у которых совпадают значения связанных полей;
  • внешние, когда в одной из таблиц выбираются все записи, а в другой — только связанные.

Существует три типа внешних объединений:

  • левое внешнее объединение, когда выбираются все строки из левой таблицы;
  • правое внешнее объединение, когда выбираются все строки из правой таблицы;
  • полное внешнее объединение, когда выбираются строки из обеих таблиц.

По умолчанию используется внутреннее объединение таблиц. Если нужно изменить тип объединения, щелкните правой кнопкой мыши по линии связи (удобнее всего по ромбику в центре связи) и выберите соответствующую команду в контекстном меню. В представлении "Products by Category" (Товары по типам) это будут команды:

  • Выделить все строки с Categories (Select All Rows from Categories);
  • Выделить все строки с Products (Select All Rows from Product).

Или можно выбрать из контекстного меню команду Свойства (Properties) и открыть диалоговое окно Свойства (Properties) .
Флажки в группе Включить строки (Include rows) позволяют установить любой тип внешнего соединения между таблицами. При изменении типа соединения меняется значок на связи — дополняется ромб справа или слева до квадрата.

Как видно из, записи в таблицах могут связываться не только по условию равенства связанных полей. Для связи можно использовать любой из операторов сравнения (>, <, >=, <= или о). При изменении оператора сравнения он отображается на значке связи, таким образом, тип связи очень хорошо идентифицируется визуально. Кроме того, когда вы подводите курсор мыши к связи, появляется всплывающая подсказка, указывающая тип объединения, условие объединения и связанные поля