Запросы из нескольких таблиц
О запросах в MS Access 2007.
Запросы, как вы уже знаете, нужны для работы с данными, находящимися в таблицах.
Чтобы создать запрос…
1) …в окне базы данных открываете Запросы
2) …и создаете запрос с помощью конструктора.
Пожалуйста, НЕ пользуйтесь для создания запросов Мастером, потому что он позволяет делать только самые простые запросы, а переделывать их потом в более продвинутые даже сложнее, чем создать запрос в конструкторе «с нуля».
Пожалуйста, скачайте базу данных для выставки собак (dogs.mdb). В ней вы найдете данные, необходимые вам для создания запросов.
Запросы на выборку
В запросах на выборку вы просите отобразить на экране определенные данные из таблиц.
Например, клички, породы собак и дату их рождения.
Итак, вот главные элементы конструктора запросов:
1 – область данных (таблиц);
2 – область условий отбора;
3 – кнопка запуска запроса.
Условия отбора
В запросах на выборку можно задавать условия. Для этого в СООТВЕТСТВУЮЩЕМ СТОЛБЦЕ нужно указать в строке Условие отбора нужное значение.
Внимание!
Пожалуйста, выполняйте в вашей базе данных все описанные ниже запросы.
Это позволит вам лучше понять и, главное, запомнить принципы работы редактора запросов.
Найдем всех шар-пеев.
Будьте внимательны! Компьютер ищет ТОЧНЫЕ совпадения, поэтому если вы случайно сделали опечатку, поставили лишний пробел или забыли дефис, то запрос может не сработать.
При задании условия отбора можно использовать операторы >, <, =, >= (больше или равно),<= (меньше или равно), <> (не равно).
Найдем всех молодых (моложе 2 лет) собак.
Обратите внимание! Также как и Excel, Access работает с разными типами данных: строковыми, числовыми, временными, логическими и др. Чтобы показать, к какому типу он отнес данное условие отбора, Access автоматически заключает строки в кавычки («шар-пей»), даты – в решетки (#01.05.2008#), числа оставляет, как есть (15), а логические проверяет, чтобы были либо ИСТИНА, либо ЛОЖЬ.
Составные условия отбора
Если нужно задать несколько условий, то условия для оператора «И» записывайте в одной строчке, а для оператора «ИЛИ» в одном в столбце друг под другом.
Здесь мы находим всех английских сеттеров и сеттеров-гордонов.
А здесь всех щенков (моложе года) шар-пеев.
А кого мы найдем здесь?
а) всех щенков шар-пеев и щенков английских сеттеров;
б) всех щенков шар-пеев и всех английских сеттеров;
в) всех шар-пеев и всех щенков английских сеттеров;
Проверьте! Сформулируйте правило, по которому Access из записей в ячейках формирует составные условия отбора.
Составные условия отбора также можно писать в одну ячейку, используя операторы Or, And.
Вот так будут выглядеть те же запросы, но записанные с помощью операторов:
Все английские сеттеры и сеттеры-гордоны.
Всех юниоры (которым больше года, но меньше двух лет).
Оператор LIKE
На выставке организована секция сеттеров. Для участия в ней нам необходимо отобрать всех представителей этой группы. Если мы просто напишем в условиях отбора «сеттер», то запрос не отберет ни одной записи, поскольку у нас нет просто сеттеров, а есть английские, ирландские сеттеры, сеттеры-гордоны, а Access требует полного совпадения значения в ячейке со значением, указанным в условии отбора. Перечислять их всех слишком долго, к тому же можно кого-нибудь забыть.
В этом случае нам пригодится оператор LIKE, который позволяет делать отбор по фрагменту строки. Использование LIKE перед условием отбора, это все равно, что включение режима подстановочных знаков в Word (* – любая последовательность символов; ? – любой символ). Значит, чтобы Access мог отыскать английских, ирландских сеттеров и сеттеров-гордонов, нужно написать в условии отбора LIKE *сеттер*.
Кто и почему будет отобран, если мы напишем в условии отбора LIKE *сеттер ?
Запросы из нескольких таблиц
В запросах мы можем объединять данные из нескольких связанных между собой таблиц. Отобразим в запросе клички, породы собак, фамилии их владельцев и город, откуда они приехали на выставку.
Чтобы добавить в запрос еще одну таблицу, вызовите контекстное меню на области таблиц и в нем пункт Добавить таблицу.
Добавьте таблицы, в которых содержатся необходимые данные (фамилия владельцев и город).
Перебросьте из области таблиц вниз, в область условий отбора, те поля из новых таблиц, которые должны быть отображены в результатах запроса.
Запустите запрос и проверьте, получилось ли у вас, как на рисунке. Проверьте себя: ответ.
Отсев пустых строк
Когда связываются несколько таблиц, то могут возникать пустые строки.
Почему это происходит?
Дело в том, что у нас в таблице tbPerson наряду с владельцами собак записаны и судьи (Петровская, Елец, Терещук). Судьи не имеют права привозить своих собак на выставку, поэтому в строках с их фамилиями пустые ячейки с кличками собак.
Есть два способа удалить пустые строки.
1. Поставить условие на значение клички собаки Is not Null, т.е. НЕ ПУСТА.
2. Или поменять тип связи между таблицами в области таблиц: нужно на линии связи, дающей неточный результат, вызвать контекстное меню, и поменять Параметры объединения.
Вопрос вам: какие настройки нужно поменять в диалоговом окне параметров объединения?