Запросы из нескольких таблиц

О запросах в MS Access 2007.

Запросы, как вы уже знаете, нужны для работы с данными, находящимися в таблицах.
Чтобы создать запрос…
1) …в окне базы данных открываете Запросы
2) …и создаете запрос с помощью конструктора.

Запросы из нескольких таблиц - student2.ru

Пожалуйста, НЕ пользуйтесь для создания запросов Мастером, потому что он позволяет делать только самые простые запросы, а переделывать их потом в более продвинутые даже сложнее, чем создать запрос в конструкторе «с нуля».

Пожалуйста, скачайте базу данных для выставки собак (dogs.mdb). В ней вы найдете данные, необходимые вам для создания запросов.

Запросы на выборку

В запросах на выборку вы просите отобразить на экране определенные данные из таблиц.
Например, клички, породы собак и дату их рождения.

Итак, вот главные элементы конструктора запросов:
1 – область данных (таблиц);
2 – область условий отбора;
3 – кнопка запуска запроса.

Запросы из нескольких таблиц - student2.ru

Условия отбора

В запросах на выборку можно задавать условия. Для этого в СООТВЕТСТВУЮЩЕМ СТОЛБЦЕ нужно указать в строке Условие отбора нужное значение.

Внимание!
Пожалуйста, выполняйте в вашей базе данных все описанные ниже запросы.
Это позволит вам лучше понять и, главное, запомнить принципы работы редактора запросов.

Найдем всех шар-пеев.

Запросы из нескольких таблиц - student2.ru

Будьте внимательны! Компьютер ищет ТОЧНЫЕ совпадения, поэтому если вы случайно сделали опечатку, поставили лишний пробел или забыли дефис, то запрос может не сработать.

При задании условия отбора можно использовать операторы >, <, =, >= (больше или равно),<= (меньше или равно), <> (не равно).
Найдем всех молодых (моложе 2 лет) собак.

Запросы из нескольких таблиц - student2.ru

Обратите внимание! Также как и Excel, Access работает с разными типами данных: строковыми, числовыми, временными, логическими и др. Чтобы показать, к какому типу он отнес данное условие отбора, Access автоматически заключает строки в кавычки («шар-пей»), даты – в решетки (#01.05.2008#), числа оставляет, как есть (15), а логические проверяет, чтобы были либо ИСТИНА, либо ЛОЖЬ.

Составные условия отбора

Если нужно задать несколько условий, то условия для оператора «И» записывайте в одной строчке, а для оператора «ИЛИ» в одном в столбце друг под другом.
Здесь мы находим всех английских сеттеров и сеттеров-гордонов.

Запросы из нескольких таблиц - student2.ru

А здесь всех щенков (моложе года) шар-пеев.

Запросы из нескольких таблиц - student2.ru

А кого мы найдем здесь?

Запросы из нескольких таблиц - student2.ru

а) всех щенков шар-пеев и щенков английских сеттеров;
б) всех щенков шар-пеев и всех английских сеттеров;
в) всех шар-пеев и всех щенков английских сеттеров;

Проверьте! Сформулируйте правило, по которому Access из записей в ячейках формирует составные условия отбора.

Составные условия отбора также можно писать в одну ячейку, используя операторы Or, And.
Вот так будут выглядеть те же запросы, но записанные с помощью операторов:
Все английские сеттеры и сеттеры-гордоны.

Запросы из нескольких таблиц - student2.ru

Всех юниоры (которым больше года, но меньше двух лет).

Запросы из нескольких таблиц - student2.ru

Оператор LIKE

На выставке организована секция сеттеров. Для участия в ней нам необходимо отобрать всех представителей этой группы. Если мы просто напишем в условиях отбора «сеттер», то запрос не отберет ни одной записи, поскольку у нас нет просто сеттеров, а есть английские, ирландские сеттеры, сеттеры-гордоны, а Access требует полного совпадения значения в ячейке со значением, указанным в условии отбора. Перечислять их всех слишком долго, к тому же можно кого-нибудь забыть.
В этом случае нам пригодится оператор LIKE, который позволяет делать отбор по фрагменту строки. Использование LIKE перед условием отбора, это все равно, что включение режима подстановочных знаков в Word (* – любая последовательность символов; ? – любой символ). Значит, чтобы Access мог отыскать английских, ирландских сеттеров и сеттеров-гордонов, нужно написать в условии отбора LIKE *сеттер*.

Запросы из нескольких таблиц - student2.ru

Кто и почему будет отобран, если мы напишем в условии отбора LIKE *сеттер ?

Запросы из нескольких таблиц

В запросах мы можем объединять данные из нескольких связанных между собой таблиц. Отобразим в запросе клички, породы собак, фамилии их владельцев и город, откуда они приехали на выставку.

Запросы из нескольких таблиц - student2.ru

Чтобы добавить в запрос еще одну таблицу, вызовите контекстное меню на области таблиц и в нем пункт Добавить таблицу.

Запросы из нескольких таблиц - student2.ru

Добавьте таблицы, в которых содержатся необходимые данные (фамилия владельцев и город).
Перебросьте из области таблиц вниз, в область условий отбора, те поля из новых таблиц, которые должны быть отображены в результатах запроса.
Запустите запрос и проверьте, получилось ли у вас, как на рисунке. Проверьте себя: ответ.

Отсев пустых строк

Когда связываются несколько таблиц, то могут возникать пустые строки.

Запросы из нескольких таблиц - student2.ru

Почему это происходит?
Дело в том, что у нас в таблице tbPerson наряду с владельцами собак записаны и судьи (Петровская, Елец, Терещук). Судьи не имеют права привозить своих собак на выставку, поэтому в строках с их фамилиями пустые ячейки с кличками собак.
Есть два способа удалить пустые строки.
1. Поставить условие на значение клички собаки Is not Null, т.е. НЕ ПУСТА.

Запросы из нескольких таблиц - student2.ru

2. Или поменять тип связи между таблицами в области таблиц: нужно на линии связи, дающей неточный результат, вызвать контекстное меню, и поменять Параметры объединения.

Запросы из нескольких таблиц - student2.ru

Вопрос вам: какие настройки нужно поменять в диалоговом окне параметров объединения?

Наши рекомендации