Реальная сила реляционной базы данных заключается в ее способности быстро извлекать и анализировать ваши данные, выполняя запрос. Запросы позволяют извлекать информацию из одной или нескольких таблиц на основе набора условий поиска, которые вы определяете.

В этом уроке вы узнаете, как создать простой запрос из одной таблицы . Затем вы узнаете, как планировать и запускать несколько более сложный многосетевой запрос.

Что такое запросы?

Запросы - это способ поиска и компиляции данных из одной или нескольких таблиц. Запуск запроса похож на запрос подробного вопроса о вашей базе данных. Когда вы создаете запрос в Access, вы определяете конкретные условия поиска, чтобы точно найти нужные данные.

Как используются запросы?

Запросы гораздо более мощные, чем простые поиски или фильтры, которые вы могли бы использовать для поиска данных в таблице. Это связано с тем, что запросы могут извлекать информацию из нескольких таблиц. Например, если вы можете использовать поиск в таблице клиентов, чтобы найти имя одного клиента в вашей компании или фильтр в таблице заказов, чтобы просмотреть только заказы, размещенные за последнюю неделю, ни один из них не позволит вам просматривать как клиентов, так и заказы на один раз. Однако вы можете легко запустить запрос, чтобы найти имя и номер телефона каждого клиента, совершившего покупку за последнюю неделю. Хорошо спроектированный запрос может предоставить информацию, которую вы, возможно, не сможете найти, просто просмотрев данные в ваших таблицах.

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

Проектирование запроса в Access

Однозарядные запросы

Давайте познакомимся с процессом построения запросов, построив самый простой запрос: запрос с одной таблицей.

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

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

Чтобы применить простой запрос из одной таблицы:

  1. Выберите вкладку « Создать » на ленте и найдите группу «Запросы».
  2. Выберите команду «Запрос дизайна».
  3. Проектирование запроса в Access

  4. Access переключится на представление Query Design . В появившемся диалоговом окне « Показать таблицу » выберите таблицу, в которую вы хотите запустить запрос. Нажмите « Добавить», затем нажмите «Закрыть» . Мы выполняем запрос о наших клиентах, поэтому добавим таблицу Customers .
  5. Проектирование запроса в Access

  6. Выбранная таблица будет отображаться в виде небольшого окна в панели «Связывание объектов» . В окне таблицы дважды щелкните имена полей, которые вы хотите включить в свой запрос. Они будут добавлены в дизайнерскую сетку в нижней части экрана.
  7. В нашем примере мы хотим отправлять приглашения клиентам, которые живут в определенной области, поэтому мы будем включать поля FirstName, Last Name, Street Address, City, State и Zip Code. Мы не планируем звонить или отправлять по электронной почте наших клиентов, поэтому нам не нужно включать номер телефона или адрес электронной почты поля.

    Проектирование запроса в Access

  8. Задайте критерии поиска , щелкнув ячейку в строке « Критерии:» каждого поля, которое вы хотите фильтровать. Ввод критериев в несколько полей в строке «Критерии: строка» задает ваш запрос, чтобы он включал только результаты, соответствующие всем критериям. Если вы хотите установить несколько критериев, но вам не нужны записи, показанные в ваших результатах, чтобы удовлетворить их все, введите первые критерии в строке «Критерии: строка» и дополнительные критерии в строке « Или» и строках под ней. Для этого запроса с одной таблицей мы будем использовать очень простые критерии поиска.
    • Мы хотим найти наших клиентов, которые живут в городе под названием Raleigh , поэтому в нашем Городском поле мы наберем «Raleigh» . Ввод «Raleigh» в кавычках будет извлекать все записи с точным соответствием для Raleigh в поле City.
    • Некоторые клиенты, которые живут в пригороде, живут довольно близко, и мы также хотели бы пригласить их. Мы добавим их почтовый индекс , 27513 , в качестве еще одного критерия. Поскольку мы хотим найти клиентов, которые либо живут в Raleigh, либо в почтовом индексе 27513, мы наберем «27513» в строке or: Zip Code.
    • Проектирование запроса в Access

  9. После того, как вы установили критерии, запустите запрос, нажав команду « Выполнить» на вкладке « Дизайн запросов ».
  10. Проектирование запроса в Access

  11. Результаты запроса будут отображаться в представлении Datasheet запроса , которое выглядит как таблица. Если вы хотите, сохраните запрос, нажав команду « Сохранить» на панели быстрого доступа. Когда появится запрос на его имя, введите нужное имя и нажмите «ОК» .
  12. Проектирование запроса в Access

Проектирование запроса с несколькими таблицами

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

Планирование запроса

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

  1. Точно укажите то, что вы хотите знать. Если бы вы могли спросить свою базу данных о каком-либо вопросе, что бы это было? Построение запроса сложнее, чем просто задание вопроса, но точно знать, какой вопрос вы хотите ответить, имеет важное значение для создания полезного запроса.
  2. Определите каждый тип информации, которую вы хотите включить в результаты вашего запроса. Какие поля содержат эту информацию?
  3. Найдите поля, которые вы хотите включить в свой запрос. В каких таблицах они содержатся?
  4. Определите критерии, которые должна удовлетворять информация в каждой области. Подумайте о вопросе, который вы задали на первом шаге. Какие поля вам нужны для поиска конкретной информации? Какую информацию вы ищите? Как вы его будете искать?

Сначала этот процесс может показаться абстрактным, но когда мы рассмотрим процесс планирования нашего собственного запроса с несколькими таблицами, вы должны начать понимать, как планирование ваших запросов может сделать их намного проще.

Планирование нашего запроса

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

Определив вопрос, который мы хотим задать

Наша база данных выпечки содержит множество клиентов, некоторые из которых никогда не размещали заказ, но которые находятся в нашей базе данных, потому что они подписались на наш список рассылки. Большинство из них живут в пределах города, но другие живут за городом или даже из штата! Мы хотим, чтобы наши загородные клиенты, которые раньше заказывали заказы, возвращались и давали нам еще одну попытку, поэтому мы отправим им несколько купонов. Мы действительно не хотим, чтобы в нашем списке были клиенты, которые живут слишком далеко; отправка купона кому-то, кто не живет в нашем районе, вероятно, не заставит их войти. Так что действительно, мы просто хотим найти людей, которые не живут в нашем городе, но которые все еще живут в нашем районе.

Проектирование запроса в Access

Короче говоря, вопрос, на который мы хотим ответить, состоит в следующем: какие клиенты живут в нашей области, находятся за пределами города и разместили заказ в нашей пекарне?

Идентификация необходимой нам информации

Какую информацию мы можем видеть об этих клиентах? Очевидно, нам понадобятся имена клиентов и их контактная информация - их адреса , номера телефонов и адреса электронной почты . Но как мы узнаем, если они разместили заказы? Каждая запись заказа идентифицирует клиента, который разместил этот заказ. Если мы включим идентификационные номера заказов , мы сможем сузить наш список до тех клиентов, которые ранее размещали заказы.

Проектирование запроса в Access

Расположение таблиц, содержащих нужную нам информацию

Чтобы написать запрос, вам нужно хорошо ознакомиться с различными таблицами в вашей базе данных. Из обширной работы с нашей собственной базой данных мы знаем, что информация о клиенте, которая нам нужна, находится в полях в таблице Customers . Наши идентификаторы номеров заказов находятся в поле в таблице « Заказы» . Нам нужно включить эти две таблицы, чтобы найти всю необходимую нам информацию.

Проектирование запроса в Access

Определение критериев, которые должен искать наш запрос

Когда вы устанавливаете критерии для поля в запросе, вы в основном применяете к нему фильтр, который сообщает запросу получить только информацию, соответствующую вашим критериям. Просмотрите список полей, которые мы включаем в этот запрос. Как и где мы можем установить критерии, которые наилучшим образом помогут нам ответить на наш вопрос?

Мы не хотим, чтобы клиенты, которые живут в нашем городе, Роли, поэтому нам нужен критерий, который вернет все записи, кроме тех, которые были с Роли в области города. Мы не хотим, чтобы клиенты, которые живут слишком далеко, тоже. Все телефонные номера в области начинаются с кода зоны 919 , поэтому мы также будем включать критерии, которые будут возвращать только записи, чьи записи из поля номера телефона начинаются с 919 . Это должно гарантировать, что мы отправим купоны только тем клиентам, которые живут достаточно близко, чтобы действительно вернуться и использовать их.

Мы не будем устанавливать критерии для поля идентификатора заказа или любых других полей, потому что мы хотим видеть все заказы, сделанные людьми, которые отвечают двум критериям, которые мы только что установили.

Проектирование запроса в Access

Чтобы писать запросы, вам нужно будет установить критерии на языке, который понимает Access . Как вы можете видеть на изображении выше, наши критерии, требующие номеров телефонов, начинаться с 919, должны быть напечатаны следующим образом: Like («919 *») . Чтобы узнать, как писать дополнительные критерии, обратитесь к нашему Краткому справочному руководству по критериям критериев запроса в разделе « Дополнительно » этого руководства. Руководство содержит несколько наиболее часто используемых критериев в запросах Access.

Объединение таблиц в запросы

Последнее, что вам нужно учитывать при разработке запроса, - это то, как вы связываете или присоединяетесь к столам, с которыми работаете. Когда вы добавляете две таблицы в запрос Access, это то, что вы увидите в области « Связывание объектов» :

Проектирование запроса в Access

Строка, соединяющая две таблицы, называется линией соединения . Посмотрите, как линия соединения на самом деле является стрелкой? Это связано с тем, что он указывает порядок, в котором запрос просматривает данные из двух таблиц. На изображении выше, стрелка указывает от налево на право , это означает , что запрос будет смотреть на данные в левой таблице первой, то только данные в правой таблице, относится к записям это уже видели в левой таблице.

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

Чтобы понять, что это значит, рассмотрите вопрос, который мы разрабатываем. По нашему запросу нам нужно увидеть клиентов, которые разместили заказы, поэтому мы включили таблицу Customers и таблицу Orders . Давайте рассмотрим некоторые данные, содержащиеся в этих таблицах.

Проектирование запроса в Access

Что вы замечаете, когда смотрите эти списки? Каждый заказ в таблице « Заказы» связан с кем-то в таблице « Клиенты» - клиентом, который разместил этот заказ. Однако, когда вы смотрите таблицу Customers, вы увидите, что клиенты, разместившие несколько заказов, связаны более чем с одним заказом, а те, кто никогда не размещал заказ, не привязаны к никаким заказам. Как вы можете видеть, даже когда две таблицы связаны, возможно иметь записи в одной таблице, которые не имеют отношения к какой-либо записи в другой таблице.

Итак, что происходит, когда Access пытается запустить наш запрос с текущим соединением слева направо ? Во-первых, он извлекает каждую запись из таблицы влево: таблица наших клиентов.

Проектирование запроса в Access

Затем он извлекает каждую запись из правой таблицы, которая имеет отношение к записи Access, уже взятой из левой таблицы.

Проектирование запроса в Access

Поскольку наше соединение началось с таблицы Customers , наш запрос будет включать записи для всех наших клиентов, включая тех, кто никогда не размещал заказы. Это больше информации, чем мы хотим! Мы только хотим , чтобы увидеть записи для клиентов , которые разместили заказы .

К счастью, мы можем исправить эту проблему, изменив направление линии соединения. Если мы присоединяемся к таблицам справа налево , Access сначала получит все заказы из правой таблицы, которая является нашей таблицей Orders :

Проектирование запроса в Access

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

Проектирование запроса в Access

Теперь у нас есть именно та информация, которую мы хотим: все клиенты, которые разместили заказ, и только те клиенты. Как вы можете видеть, нам нужно было присоединиться к нашим таблицам в правильном направлении, чтобы получить нужную нам информацию.

Теперь, когда мы понимаем, какое направление соединения нам нужно использовать, мы готовы построить наш запрос!

В нашем запросе, мы должны использовать право - налево Join, но правильное направление присоединиться к таблицам в запросах будет зависеть от того, что информация , которую вы хотите увидеть и где хранится эта информация. Когда вы добавляете таблицы в запрос, Access автоматически присоединяется к таблицам для вас, но часто не присоединяет их в правильном направлении. Вот почему важно всегда пересматривать соединения между вашими таблицами перед созданием запроса.

Создание запроса с несколькими таблицами

Теперь, когда мы запланировали наш запрос, мы готовы его спроектировать и запустить. Если вы создали письменные планы для своего запроса, обязательно обращайтесь к ним часто в процессе разработки запроса.

Чтобы создать запрос с несколькими таблицами:

  1. Выберите команду « Конструктор запросов» на вкладке « Создать » на ленте.
  2. Проектирование запроса в Access

  3. В появившемся диалоговом окне « Показать таблицу » выберите каждую таблицу, которую вы хотите включить в свой запрос, затем нажмите « Добавить» . После того, как вы добавили все нужные таблицы, нажмите « Закрыть» . Когда мы планировали наш запрос, мы решили, что нам нужна информация из таблицы Customers и Orders , поэтому мы добавим их.
  4. Проектирование запроса в Access

  5. Таблицы появятся в панели «Связывание объектов» , которая связана линией соединения . Дважды щелкните тонкий раздел линии соединения между двумя таблицами, чтобы изменить направление соединения.
  6. Проектирование запроса в Access

  7. Регистрация Свойства диалоговое окно. Выберите вариант, чтобы выбрать направление вашего соединения.
    • Выберите вариант 2: для объединения слева направо . В нашем запросе левая таблица - таблица Customers , поэтому выбор этого означает, что все наши клиенты, которые соответствовали нашим критериям местоположения, независимо от того, разместили ли они заказ, будут включены в наши результаты. Мы не хотим выбирать этот вариант для нашего запроса.
    • Выберите вариант 3: для запроса справа налево . Поскольку наш правильный стол является нашей таблицей Orders , выбор этого параметра позволит нам работать с записями для всех заказов и только для клиентов, разместивших заказы. Мы выберем этот вариант для нашего запроса, потому что это именно те данные, которые мы хотим видеть.
    • Проектирование запроса в Access

  8. В окнах таблицы дважды щелкните имена полей, которые вы хотите включить в свой запрос. Они будут добавлены в дизайнерскую сетку в нижней части экрана.
  9. В нашем примере мы будем включать большинство полей из таблицы Customers : имя , фамилия , адрес , город , штат , почтовый индекс и номер телефона . Мы также будем включать идентификационный номер из таблицы Orders .

    Проектирование запроса в Access

  10. Установите критерии поля , введя требуемые критерии в строке критериев каждого поля. Мы хотим установить два критерия:
    • Во-первых, чтобы найти клиентов, которые не живут в Роли, мы будем вводить Not In («Raleigh») в поле City.
    • Во-вторых, чтобы найти клиентов , которые имеют телефонный номер , начинающийся с кодом 919 , мы вводим Like ( «919 *») в номер телефона поле.
    • Проектирование запроса в Access

  11. После того, как вы установили критерии, запустите запрос, нажав команду « Выполнить» на вкладке « Дизайн запросов ».
  12. Проектирование запроса в Access

  13. Результаты запроса будут отображаться в представлении Datasheet запроса , которое выглядит как таблица. Если вы хотите, сохраните запрос, нажав команду « Сохранить» на панели быстрого доступа. Когда появится запрос на его имя, введите нужное имя и нажмите «ОК» .
  14. Проектирование запроса в Access




Понравилась статья? Поделитесь ею с друзьями и напишите отзыв в комментариях!

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.

Ok