Как сделать запрос в аксес
Как создавать запросы в Access: пошаговая инструкция и рекомендации
Приложение СУБД MS Access – это полноценный помощник для создания и ведения баз данных, заключенных в таблицы и массивы. Если база имеет слишком большой объем, быстро найти необходимые значения довольно сложно.
Именно поэтому в Access существует такая функция, как запросы. Рассмотрим, что это такое, как работает, какие имеет особенности.
Создание запросов в Microsoft Access
Чтобы разобраться, как создавать запросы в Access, нужно знать основные положения работы с СУБД.
Существует два способа выполнить данную процедуру:
Первый способ дает возможность создать любой из всех доступных запросов в ручном режиме, но с небольшой оговоркой, заключающейся в том, что пользователь имеет опыт работы с приложением Access. Также он должен разбираться хотя бы в основных его задачах. Что касается второго способа, то его нужно рассмотреть более подробно.
Легкий путь для новичков
Знающий человек за несколько кликов мышью выбирает те компоненты, которые потребуются пользователю для выполнения запроса, а затем быстро формирует реестр, в соответствии с собранными ключевыми значениями. Если это первое знакомство с СУБД, и пользователь не представляет, как создавать запросы в Access, то выбирается программа Мастер.
В данном режиме можно ознакомиться и разобраться со следующими типами запросов:
Данный выбор осуществляется уже на первом этапе работы с Мастером. А в дальнейшем, следуя четким указаниям, даже начинающий пользователь легко создаст запрос. Познакомимся с его разновидностями.
Простой запрос
Этот инструмент работы с таблицами собирает нужные данные из указанных пользователем полей. Уже по названию видно, что это самый популярный тип запросов для новичков. Его удобство заключается в том, что такая процедура открывается в новой вкладке. Поэтому ответ на вопрос, как создать запрос в Access 2010, становится очевидным уже после открытия первого меню Мастера.
Перекрестный запрос
Этот тип выборки более сложный. Чтобы разобраться, как создать перекрестный запрос в Access с помощью «Мастера» в данном режиме, нужно кликнуть по этой функции в первом окне.
На экране появится таблица, в которой можно выбрать до трех столбцов, расположенных в оригинале.
Одно из оставшихся не выбранных полей может быть использовано в качестве заголовков таблицы запроса. На третьем этапе процедуры (пересечение) выбирается еще одно значение с вариативностью функцию (среднее значение, сумма, первый, последний).
На фото показано, что перекрестный запрос создан, и что по заданным параметрам совершены необходимые действия.
Повторяющиеся записи
Как понятно из названия, основное предназначение данного запроса – выборка всех одинаковых строк в таблице по указанным параметрам. Выглядит это так:
Кроме того, доступен выбор дополнительных полей, чтобы подобрать соответствие сразу в нескольких строках.
Чтобы выбрать повторяющиеся записи, нужно раскрыть список запросов и создать там новую папку. Далее в окошке «Новый запрос» выбрать строку «Поиск повторяющихся записей». Далее нужно следовать указаниям Мастера.
Записи без подчиненных
Это последний тип запросов, доступный в режиме «Мастер – Записи без подчиненных».
В этом случае ведется выборка только тех значений, которые не задействованы ни в одном поле таблиц и запросов, но которые уже созданы.
Данный тип актуален только в случаях, когда баз данных несколько.
Все эти четыре типа запросов являются базовой точкой для работы со сложными элементами, но позволяют легко разобраться, как создать запрос в базе данных Access.
Функции запросов в MS Access
Разберемся, зачем нужно выполнять описанные выше действия. Задача всех простых и сложных запросов в СУБД Access заключается в следующем:
Запрос на выборку
Этот тип работы с базами данных является сложным, так как требует участия нескольких таблиц.
Необходимо, чтобы во всех таблицах были общие ключевые поля. В противном случае совершить операцию не получится.
Повторим, как создать запрос на выборку в Access. Сначала нужно создать простой запрос с выбором нужных полей. Уже здесь можно редактировать данные, чтобы привести их в желаемый вид. К слову, внесенные изменения перенесутся и в исходные таблицы, так что этот момент нужно учитывать.
В открывшемся окне конструктора заполняется окно «Добавление таблиц». Здесь нужно добавить те таблицы или запросы, из которых нужно вытаскивать исходные значения.
После добавления можно приступить к заполнению условий запроса. Для этого нам нужна строка «Поле». В ней нужно подобрать те значения из таблиц, которые будут отображаться при запросе.
Чтобы завершить операцию, нужно нажать на кнопку «Выполнить».
Запрос с параметрами
Это еще одна разновидность сложной процедуры, которая потребует от пользователя определенных навыков работы с базами данных. Одним из главных направлений такого действия является подготовка к созданию отчетов с объемными данными, а также получение сводных результатов. Как создавать запросы в Access 2007 с помощью конструктора, будет рассмотрено ниже.
Начинать данную процедуру по выборке данных нужно с создания простого запроса, чтобы выбрать нужные поля. Далее через режим Конструктора обязательно нужно заполнить поле «Условие отбора» и, уже исходя из внесенного значения, будет осуществляться отбор.
Расширенный перекрестный запрос
Продолжаем усложнять ситуацию. Еще труднее для понимания является информация о том, как создавать запросы в Access, если присутствует несколько таблиц с данными. Перекрестный запрос уже рассматривался выше, как один из вариантов работы с Мастером. Однако, и в режиме «Конструктора» можно создавать подобный запрос.
Открывается меню добавления исходных таблиц, а также возможность заполнения выборочных полей. Единственное, на что следует обратить внимание, – пункты «групповая операция» и «перекрестная таблица». Их нужно заполнять правильно, иначе процедура не будет выполнена корректно.
Перекрестные запросы – это наиболее простой способ поиска и выборки информации из нескольких источников данных, плюс с возможностью формирования диаграмм и графиков.
Более того, при использовании данной процедуры быстрее выполняется поиск, даже с несколькими вариантами развития.
Конечно, присутствуют и «подводные камни», которые могут помешать в работе. Например, при создании запроса на сортировку базы данных по значению столбцов система выдает ошибку. То есть доступна только сортировка по стандартным пунктам – «возрастание и убывание».
Краткие рекомендации
Подводя итоги, нужно сказать, что решить, как создавать запросы в Access – с помощью Мастера или Конструктора, должен сам пользователь. Хотя, для большинства людей, которые используют СУБД MS Access, больше подойдет первый вариант. Ведь Мастер сам сделает всю работу, оставив для пользователя только несколько кликов мышью, при выборе условий запроса.
Чтобы использовать расширенные настройки, явно необходим опыт работы с базами данных на уровне профессионала. Если в работе задействованы большие базы, лучше всего обратиться к специалистам, дабы избежать нарушения работы СУБД и возможных потерь данных.
Есть один момент, который доступен лишь программистам. Так как основным языком СУБД является SQL, то нужный запрос можно написать в виде программного кода. Чтобы работать в данном режиме, достаточно нажать на строку уже созданного запроса, и в открывшемся контекстном меню выбрать «Режим SQL».
Создание запроса на основе нескольких таблиц
В простейшем случае построение и использование запроса в Access заключается в выборе требуемых полей из таблицы, применении условий (если они нужны) и просмотре результатов запроса. Но чаще необходимо использовать данные, которые находятся в разных таблицах. К счастью, вы можете создавать запросы, объединяющие сведения из нескольких источников. В этой статье объясняется, когда следует получать данные сразу из нескольких таблиц и как это делать.
Выберите нужное действие
Уточнение данных в запросе с помощью данных из связанной таблицы
В некоторых случаях запрос, построенный на основе одной таблицы и предоставляющий необходимые сведения, может стать более информативным и полезным благодаря данным из другой таблицы. Например, предположим, что у вас есть список кодов сотрудников, которые выводятся в результатах запроса. Вы понимаете, что было бы более удобнее, если бы в этом списке были видны и имена сотрудников, но они находятся в другой таблице. Чтобы в результатах запроса отображались имена сотрудников, следует включить в него обе таблицы.
Использование мастера запросов для построения запроса на основе главной и связанной таблицы
Убедитесь, что для таблиц задано отношение в окно отношений.
На вкладке Работа с базами данных в группе Показать или скрыть выберите пункт Отношения.
На вкладке Конструктор в группе Связи нажмите кнопку Все связи.
Выберите таблицы, которые нужно связать.
Если таблицы отображаются в окне схемы данных, убедитесь, что отношение между ними уже установлено.
Отношение отображается в виде линии, соединяющей общие поля двух таблиц. Чтобы узнать, какие поля таблиц связаны отношением, дважды щелкните линию связи.
Если таблицы не отображаются в окне схемы данных, следует добавить их.
На вкладке Конструктор в группе Показать или скрыть нажмите кнопку Имена таблиц.
Дважды щелкните каждую из таблиц, которые вы хотите отобразить, а затем нажмите кнопку Закрыть.
Если между таблицами не установлено отношение, создайте его, перетащив поле из одной таблицы на поле другой. Поля, по которым создается отношение, должны иметь одинаковый тип данных.
Примечание: Создать отношение между полем с типом Тип данных «Счетчик» и полем, имеющим тип данных Числовой тип данных, можно в том случае, если это поле имеет размер «длинное целое». Это часто бывает так при создании отношение «один-ко-многим».
Откроется диалоговое окно Изменение связей.
Нажмите кнопку Создать для создания связи.
Дополнительные сведения о параметрах, используемых при создании отношения, см. в статье Создание, изменение и удаление отношения.
Закройте окно схемы данных.
На вкладке Создание в группе Запросы нажмите кнопку Мастер запросов.
В диалоговом окне Новый запрос выберите пункт Простой запрос и нажмите кнопку ОК.
В поле со списком Таблицы и запросы выберите таблицу, содержащую основные сведения, которые вы хотите включить в запрос.
В области Доступные поля щелкните первое поле, которое вы хотите включить в запрос, и нажмите кнопку с одинарной стрелкой вправо, чтобы переместить это поле в список Выбранные поля. Повторите то же самое для каждого поля этой таблицы, которое вы хотите включить в запрос. Это могут быть поля, данные из которых должны выводиться в результатах запроса, или поля, используемые для наложения ограничений на выводимые строки путем задания определенных условий.
В поле со списком Таблицы и запросы выберите таблицу, содержащую дополнительные сведения, с помощью которых вы хотите уточнить результаты запроса.
Добавьте поля, которые следует использовать для уточнения результатов запроса, в список Выбранные поля и нажмите кнопку Далее.
В группе Выберите подробный или итоговый отчет выберите вариант Подробный или Итоговый.
Если не требуется использовать в запросе какие-либо агрегатные функции ( Sum, Avg, Min, Max, Count, StDev или Var), выберите подробный запрос. В противном случае выберите вариант «Сводка». Выбрав параметры, нажмите кнопку Далее.
Нажмите кнопку Готово для просмотра результатов.
Пример на основе базы данных «Борей»
В приведенном ниже примере используется мастер запросов, с помощью которого строится запрос, отображающий список заказов, стоимость доставки каждого заказа и фамилию сотрудника, выполнившего заказ.
Примечание: Этот пример подразумевает изменение учебной базы данных «Борей». Рекомендуем сделать ее резервную копию и выполнять инструкции, используя резервную копию.
Построение запроса с помощью мастера запросов
Откройте учебную базу данных «Борей». Закройте форму входа.
На вкладке Создание в группе Запросы нажмите кнопку Мастер запросов.
В диалоговом окне Новый запрос выберите пункт Простой запрос и нажмите кнопку ОК.
В поле со списком Таблицы и запросы выберите пункт Таблица: Заказы.
В списке Доступные поля дважды щелкните пункт ИД_заказа, чтобы переместить это поле в список Выбранные поля. Дважды щелкните пункт Цена доставки, чтобы переместить это поле в список Выбранные поля.
В поле со списком Таблицы и запросы выберите пункт Таблица: Сотрудники.
В списке Доступные поля дважды щелкните пункт Имя, чтобы переместить это поле в список Выбранные поля. Дважды щелкните пункт Фамилия, чтобы переместить это поле в список Выбранные поля. Нажмите кнопку Далее.
Так как вы создаете список всех заказов, следует использовать подробный запрос. Если нужно суммировать стоимость доставки заказов, выполненных сотрудником, или применить другую агрегатную функцию, следует использовать итоговый запрос. Выберите вариант Подробный (вывод каждого поля каждой записи) и нажмите кнопку Далее.
Нажмите кнопку Готово для просмотра результатов.
Запрос вернет перечень заказов, для каждого из которых будет указана стоимость доставки, а также имя и фамилия сотрудника, выполнившего его.
Объединение данных в двух таблицах с помощью их связей с третьей таблицей
Часто данные в двух таблицах связаны друг с другом через третью таблицу. Это может быть в том случае, когда данные в первых двух таблицах связаны отношение «многие-ко-многим». Хорошим приемом при проектировании баз данных является разбиение одной связи с отношением «многие-ко-многим» между двумя таблицами на две связи с отношением «один-ко-многим», в которых участвуют три таблицы. Это делается путем создания третьей (связующей) таблицы, в которой есть первичный ключ и внешний ключ для каждой из таблиц. Затем создается связь «один-ко-многим» между каждым внешним ключом связующей таблицы и соответствующим первичным ключом связуемой таблицы. В таких случаях следует включать в запрос все три таблицы, даже если вы хотите получить данные только из двух.
Создание запроса на выборку с использованием таблиц, связанных отношением «многие-ко-многим»
На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
Откроется диалоговое окно Добавление таблицы.
В диалоговом окне Добавление таблицы дважды щелкните две таблицы, содержащие данные, которые вы хотите включить в запрос, а также связующую их таблицу, после чего нажмите кнопку Закрыть.
Все три таблицы появятся в рабочей области конструктора запросов, связанные по соответствующим полям.
Дважды щелкните поля, которые вы хотите использовать в запросе. Каждое поле появится в бланк запроса.
В бланке запроса укажите условия для полей в строке Условия отбора. Чтобы поле, по которому задаются условия, не отображалось в результатах запроса, снимите флажок в строке Показать для него.
Чтобы отсортировать результаты по значениям поля, в бланке запроса в строке Сортировка для него выберите значение По возрастанию или По убыванию (в зависимости от того, в каком направлении вы хотите выполнить сортировку записей).
На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Access выведет результаты запроса в Режим таблицы.
Пример на основе базы данных «Борей»
Примечание: Этот пример подразумевает изменение учебной базы данных «Борей». Рекомендуем сделать ее резервную копию и выполнять инструкции, используя резервную копию.
Предположим, что у вас появилась новая возможность: поставщик из Рио-де-Жанейро нашел ваш веб-сайт и хочет с вами сотрудничать. Однако он работает только в Рио-де-Жанейро и Сан-Паулу. Компания поставляет все интересующие вас категории пищевых продуктов. Являясь довольно крупным предприятием, поставщик хочет, чтобы вы гарантировали достаточно большой рынок сбыта, который обеспечил бы ему годовые продажи объемом не менее 20 000 бразильских реалов (около 9 300 долларов США). Можете ли вы обеспечить требуемый рынок сбыта?
Данные, необходимые для ответа на этот вопрос, находятся в двух местах: в таблице «Клиенты» и в таблице «Сведения о заказе». Эти таблицы связаны друг с другом через таблицу «Заказы». Отношения между этими таблицами уже заданы. В таблице «Заказы» для каждого заказа может быть указан только один клиент, связанный с таблицей «Клиенты» по полю «ИДКлиента». Каждая запись в таблице «Сведения о заказе» связана только с одним заказом в таблице «Заказы» по полю «ИД_заказа». Таким образом, у каждого клиента может быть множество заказов, для каждого из которых есть несколько записей со сведениями.
В данном примере следует построить перекрестный запрос, в котором будут отображены годовые продажи в городах Рио-де-Жанейро и Сан-Паулу.
Открытие запроса в Конструкторе
Откройте базу данных «Борей». Закройте форму входа.
На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
Откроется диалоговое окно Добавление таблицы.
В диалоговом окне Добавление таблицы дважды щелкните таблицы Клиенты, За казы и Сведения о заказе, а затем нажмите кнопку Закрыть.
Все три таблицы появятся в рабочей области конструктора запросов.
В таблице «Клиенты» дважды щелкните поле «Город», чтобы добавить его в бланк запроса.
В бланке запроса в строке Условие отбора столбца Город введите In («Рио-де-Жанейро»,»Сан Паулу). Это позволяет включить в запрос только записи о заказах клиентов из этих городов.
В таблице «Сведения о заказе» дважды щелкните поля «ДатаИсполнения» и «Цена».
Поля добавляются в бланк запроса.
В столбце бланка запроса ДатаИсполнения выберите строку Поле. Замените [ДатаИсполнения] на Год: Format([ДатаИсполнения],»yyyy»). При этом будет создан псевдоним поля ( Год), позволяющий использовать только значение года из даты, указанной в поле «ДатаИсполнения».
В столбце бланка запроса Цена выберите строку Поле. Замените [Цена] на Продажи: [Сведения о заказе].[Цена]*[Количество]-[Сведения о заказе].[Цена]*[Количество]*[Скидка]. При этом будет создан псевдоним поля ( Продажи), вычисляющий сумму продаж для каждой записи.
На вкладке Конструктор в группе Тип запроса щелкните элемент Перекрестная таблица.
В бланке запроса появятся две новые строки: Итоги и Перекрестная таблица.
В столбце бланка запроса Город щелкните строку Перекрестная таблица, а затем щелкните Заголовки строк.
Названия городов будут использоваться в качестве заголовков строк (т. е. запрос будет возвращать одну строку для каждого города).
В столбце Год щелкните строку Перекрестная таблица, а затем щелкните Заголовки столбцов.
Значения годов будут использоваться в качестве заголовков столбцов (т. е. запрос будет возвращать один столбец для каждого года).
В столбце Продажи щелкните строку Перекрестная таблица, а затем щелкните элемент Значение.
Значения продаж будут отображаться на пересечениях строк и столбцов (т. е. запрос будет возвращать одно значение продаж для каждого сочетания города и года).
В столбце Продажи щелкните строку Итоги, а затем щелкните элемент Sum.
Запрос будет суммировать все значения столбца.
В строке Итоги для других двух столбцов можно оставить значение по умолчанию Группировка, так как в этих столбцах требуется отобразить отдельные значения, а не агрегированные показатели.
На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Теперь у вас есть запрос, возвращающий общие годовые продажи по Рио-де-Жанейро и Сан-Паулу.
Просмотр всех записей из двух похожих таблиц
Иногда требуется объединить данные из двух таблиц, которые имеют одинаковую структуру, но расположены в разных базах данных. Рассмотрим следующий сценарий.
Предположим, вы являетесь аналитиком и занимаетесь обработкой сведений об учащихся. Вы начинаете работу над новым проектом совместной обработки данных по вашей и другой школе с целью улучшения их учебных планов. По некоторым из исследуемых вопросов удобнее просматривать записи по обеим школам вместе, словно бы они находились в одной таблице.
Вы можете импортировать данные другой школы в новые таблицы в своей базе данных, но в этом случае изменения, внесенные в базу данных другой школы, не будут отражаться в вашей базе данных. Лучшим решением было бы установить связь с таблицами другой школы, а затем создать запросы, объединяющие эти данные во время выполнения. При этом вы сможете анализировать данные в едином наборе вместо того, чтобы выполнять два отдельных анализа, а затем пытаться объединить их в один.
Чтобы просмотреть все записи из двух таблиц с одинаковой структурой, используйте запрос на объединение.
Запросы на объединение невозможно отобразить в Конструкторе. Они создаются с помощью команд SQL, которые нужно вводить на вкладке объекта в режим SQL.
Создание запроса на объединение двух таблиц
На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
Откроется бланк конструктора запроса и диалоговое окно Добавление таблицы.
В диалоговом окне Добавление таблицы нажмите кнопку Закрыть.
На вкладке Конструктор в группе Тип запроса нажмите кнопку Объединение.
Запрос переключится из Конструктора в режим SQL. На данном этапе вкладка объекта в режиме SQL будет пуста.
В режиме SQL введите SELECT и список полей первой таблицы, которые вы хотите включить в запрос. Имена полей должны быть заключены в квадратные скобки и разделены запятыми. Когда вы закончите вводить имена полей, нажмите клавишу ВВОД. Курсор переместится на одну строку вниз в окне режима SQL.
Введите FROM и имя первой таблицы, включаемой в запрос. Нажмите клавишу ВВОД.
Если вы хотите указать условие для поля первой таблицы, введите WHERE, имя поля, оператор сравнения (обычно знак равенства =) и условие. Можно добавлять дополнительные условия к концу предложения WHERE, используя ключевое слово AND и такой же синтаксис, как и для первого условия (например, WHERE [Уровень]=»100″ AND [Часов]>2). После завершения ввода условий нажмите клавишу ВВОД.
Введите слово UNION и нажмите клавишу ВВОД.
Введите SELECT и список полей второй таблицы, которые вы хотите включить в запрос. Следует указать те же поля, что для первой таблицы, и в том же порядке. Имена полей должны быть заключены в квадратные скобки и разделены запятыми. Когда вы закончите вводить имена полей, нажмите клавишу ВВОД.
Введите FROM и имя второй таблицы, включаемой в запрос. Нажмите клавишу ВВОД.
Если вы хотите, добавьте предложение WHERE, как описано в шаге 6.
Введите точку с запятой ( ;), чтобы обозначить конец запроса.
На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Результаты будут отображены в режиме таблицы.