Использование в запросах полей, одновременно допускающих несколько значений

Важно :  Данная статья переведена с помощью машинного перевода, см. Отказ от ответственности. Используйте английский вариант этой статьи, который находится здесь, в качестве справочного материала.

В приложении Microsoft Office Access 2007 можно создать поле, содержащее несколько значений, например, список людей, которым назначен вопрос. Поля, одновременно допускающие несколько значений, используются в определенных ситуациях, например при использовании приложения Office Access 2007 для работы со сведениями, хранящимися в списке Windows SharePoint Services 3.0, содержащем поле одного из таких типов полей, которые одновременно допускают несколько значений, доступных в списке Windows SharePoint Services 3.0.

В этой статье рассматриваются поля, одновременно допускающие несколько значений, и использование их в запросах.

В этой статье:

Что такое многозначного поля?

Знакомство с запросами

Отображение многозначного поля в запросе

Отображение отдельных значений в многозначное поле

Общие сведения о присоединенное значение и значение отображения поля подстановки

Как отобразить присоединенное значение в запросе

Ввод простой запрос условий для поля, одновременно допускающем несколько значений

Поиск более одного значения в поле, одновременно допускающем несколько значений

Влияние включения. Значение поля в списке полей

Подсчет, группировки и использовать другие статистические функции

С помощью запроса на добавление с многозначного поля

Использование запроса на обновление с многозначного поля

Использование запроса на удаление с многозначного поля

К началу страницы

Что такое поле, одновременно допускающее несколько значений?

Предположим, имеется задание, которое нужно поручить одному из сотрудников или подрядчиков, но принято решение поручить это задание еще нескольким сотрудникам. В Office Access 2007 можно создать поле, одновременно допускающее несколько значений, которое позволит выбрать работников в списке.

Многозначное поле

Если щелкнуть поле со списком, то установленные флажки покажут выбранные пункты. После этого можно установить или снять флажки в списке и затем нажать кнопку OK, чтобы подтвердить результаты выбора.

Поле со списком, одновременно допускающее несколько значений

Имена выбранных сотрудников хранятся в поле, одновременно допускающем несколько значений, и при отображении разделяются запятыми (по умолчанию).

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

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

Можно задать вопрос, почему Office Access 2007 позволяет одновременно хранить несколько значений в поле, когда большая часть систем управления реляционными базами данных не позволяет. Ответ: ядро базы данных в Office Access 2007 на самом деле не хранит одновременно несколько значений в одном поле. То, что видит пользователь, с чем работает и что отображается в одном поле — значения на самом деле хранятся отдельно и управляются в скрытых системных таблицах. Ядро базы данных Access управляет ими, автоматически разделяя данные и собирая их вместе для отображения в одном поле.

Технически модель поля, одновременно допускающего несколько значений, в Access реализует отношение «многие-ко-многим». Например, имеется таблица событий, где присваивается ответственность за каждое событие одному или нескольким сотрудникам. Предположим, создано поле «Присвоено», одновременно допускающее несколько значений, для присвоения событий сотрудникам. Отношения между событиями и сотрудниками — «многие-ко-многим». Таким образом, с одним событием можно связать сразу несколько сотрудников, и наоборот, один сотрудник может быть связан с несколькими событиями.

К началу страницы

Общие сведения о запросах

Основное предназначение баз данных — выдача сведений: «Какой продукт лучше всего раскупают? Кто является лучшим клиентом? Где не достигаются цели продаж?» Все эти вопросы можно обоснованно задать хорошо структурированной базе данных. Чтобы получить ответы от базы данных Access, создается запрос и вводятся нужные условия. Запрос может брать данные из одной или нескольких таблиц. После того как Access извлечет данные, отвечающие на вопросы, их можно просмотреть и проанализировать. После создания запроса его можно использовать как основу для формы, отчета, диаграммы или даже другого запроса.

Приложение Office Access 2007 позволяет задействовать в запросах поля, одновременно допускающие несколько значений, определенными способами. Можно отобразить в отчете поле, одновременно допускающее несколько значений, отобразить в запросе отдельные значения поля, одновременно допускающего несколько значений, а также выполнить определенные статистические операции и запросы на изменение с помощью полей, одновременно допускающих несколько значений.

К началу страницы

Отображение в запросе поля, одновременно допускающего несколько значений

Когда в запросе используется поле, одновременно допускающее несколько значений, необходимо выбрать способ отображения его значений: полный список значений, разделенных запятыми, или отображение каждого значения в отдельной строке. Предположим, есть таблица «Вопросы», которая содержит поле «Назначено», используемое для назначения вопросов сотрудникам. Чтобы построить запрос, который содержит поле «Назначено», выполните следующие действия.

  1. Нажмите кнопку Microsoft Office Изображение кнопки Office и выберите Открыть.

  2. В диалоговом окне Открытие файла базы данных выберите и откройте базу данных.

  3. На вкладке Создание в группе Другие нажмите кнопку Конструктор запросов.

    Изображение ленты Access

  4. В диалоговом окне Добавление таблицы выделите таблицу (в данном примере «События»), которая содержит поле, одновременно допускающее несколько значений, и нажмите кнопку Добавить.

  5. Нажмите кнопку Закрыть.

  6. Перетащите поля, которые нужно использовать, в бланк запроса. В этом примере перетащите в бланк запроса поле «Название» и поле «Назначено», одновременно допускающее несколько значений.

  7. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

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

Результат запроса, отображающий поля «Название» и «Назначено»

При создании запроса в режиме конструктора в Access автоматически генерируется соответствующая инструкция SQL (языка структурированных запросов). SQL — это язык запросов, используемый в Access. Можно переключиться в режим SQL, чтобы увидеть инструкцию SQL, выполнив следующие действия.

  1. На вкладке Конструктор в группе Результаты щелкните стрелку под пунктом Режим для отображения меню Режим.

  2. Выберите пункт Режим SQL.

Инструкция SQL выглядит следующим образом.

SELECT Issues.Title, 
Issues.AssignedTo
FROM Issues;

К началу страницы

Отображение отдельных значений в поле, одновременно допускающем несколько значений

Допустим, необходимо обеспечить развернутый (иногда называемый плоским) просмотр поля «Назначено», одновременно допускающего несколько значений, в этом режиме каждое имя или значение поля отображается в отдельной строке. Для этого нужно задать свойство Значение (Value), добавив строку «.Значение» к значению поля «Назначено» в строке Поле, как показано ниже на бланке запроса.

Бланк запроса, отображающий поля «Название» и «Назначено.Значение»

Когда в строке Поле указано Назначено, при выполнении запроса в Access будут отображаться в одну строку все значения из поля, одновременно допускающего несколько значений. Когда используется свойство Значение (Value), например Назначено.Значение, поле, одновременно допускающее несколько значений, будет отображаться в развернутой форме, где каждое значение отображается в отдельной строке. Можно создать запрос для отображения отдельных значений, выполнив следующие действия.

  1. Нажмите кнопку Microsoft Office Изображение кнопки Office и выберите Открыть.

  2. В диалоговом окне Открытие файла базы данных выберите и откройте базу данных.

  3. На вкладке Создание в группе Другие нажмите кнопку Конструктор запросов.

    Изображение ленты Access

  4. В диалоговом окне Добавление таблицы выделите таблицу (в данном примере «События»), которая содержит поле, одновременно допускающее несколько значений, и нажмите кнопку Добавить.

  5. Нажмите кнопку Закрыть.

  6. Перетащите на бланк запроса поля, которые нужно использовать (в данном примере поле «Назначено.Значение», одновременно допускающее несколько значений).

  7. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

Результат запроса, отображающий поле «Название» и отдельные значения поля «Назначено»

При создании запроса в режиме конструктора в Access автоматически генерируется соответствующая инструкция SQL. SQL — это язык запросов, используемый в Access. Можно переключиться в режим SQL, чтобы увидеть инструкцию SQL, выполнив следующие действия.

  1. На вкладке Конструктор в группе Результаты щелкните стрелку под пунктом Режим для отображения меню Режим.

  2. Выберите пункт Режим SQL.

Инструкция SQL выглядит следующим образом.

SELECT Issues.Title, 
Issues.AssignedTo.Value
FROM Issues;

К началу страницы

Понятие о присоединенном и отображаемом значении в поле подстановок

Поле, одновременно допускающее несколько значений — это поле подстановок. Поле подстановок — это поле в таблице, значения которого извлекаются из другой таблицы, запроса или списка значений. Во всех предыдущих версиях Access поддерживались только однозначные поля подстановок. Поля подстановок, одновременно допускающие несколько значений — это новинка приложения Office Access 2007. Целью поля подстановок является замена отображения числа, например кода (или другого значения внешнего ключа), чем-либо более выразительным, например именем. Так, вместо отображения кода контакта в Access может отображаться имя контакта. Код контакта — это присоединенное значение. Оно автоматически подставляется в исходную таблицу или запрос и заменяется именем контакта. Имя контакта — это отображаемое значение.

Как и однозначное поле подстановок, имеющее отображаемое и присоединенное значения, поле подстановок, одновременно допускающее несколько значений, имеет отображаемое значение, отображающееся в интерфейсе пользователя, и присоединенное значение, хранящееся в таблице. Для каждого введенного значения в поле, одновременно допускающем несколько значений, отображаемое значение «подставляется» на основе присоединенного.

Это значит, что в Access часто отображается подставленное отображаемое значение, отличающееся от присоединенного значения, хранящегося в данном поле. В предыдущем примере с полем «Назначено» набор значений кодов работников из запроса «Дополнительные сведения о контактах» хранился в поле «Назначено». Запрос «Дополнительные сведения о контактах» был выбран как источник строк при создании поля, одновременно допускающего несколько значений.

Эти коды работников являлись присоединенными значениями. Но поскольку поле «Назначено» — это поле подстановок, в Access отобразился набор подставленных значений из результата запроса — в данном случае это имена контактов. Имена контактов являлись отображаемыми значениями.

Таблица с отображаемыми значениями в сравнении с таблицей со связанными значениями

1. Отображаемые значения.

2. Присоединенные значения.

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

  1. Нажмите кнопку Microsoft Office Изображение кнопки Office и выберите Открыть.

  2. В диалоговом окне Открытие выберите и откройте базу данных.

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

  4. Выберите пункт Конструктор.

  5. Щелкните поле, одновременно допускающее несколько значений (например, поле «Назначено»).

  6. В группе Свойства поля перейдите на вкладку Подстановка.

Свойства многозначного поля подстановки

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

К началу страницы

Отображение присоединенного значения в запросе

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

  1. Нажмите кнопку Microsoft Office Изображение кнопки Office и выберите Открыть.

  2. В диалоговом окне Открытие файла базы данных выберите и откройте базу данных.

  3. На вкладке Создание в группе Другие нажмите кнопку Конструктор запросов.

    Изображение ленты Access

  4. В диалоговом окне Добавление таблицы выделите таблицу (в данном примере «События»), которая содержит поле, одновременно допускающее несколько значений, и нажмите кнопку Добавить.

  5. Нажмите кнопку Закрыть.

  6. Перетащите поля, которые нужно использовать, в бланк запроса. В этом примере перетащите в бланк запроса поле «Название» и поле «Назначено.Значение», одновременно допускающее несколько значений.

  7. Щелкните поле «Назначено.Значение» на бланке запроса, чтобы у него был фокус.

  8. На вкладке Конструктор в группе Отображение нажмите кнопку Страница свойств.

  9. На странице свойств на вкладке Подстановка в свойстве Тип элемента управления (Display Control) выберите Поле.

Свойство «Тип элемента управления (Display Control)» в конструкторе запросов

При изменении значения свойства «Тип элемента управления (Display Control)» на «Поле» отключается нормальное поведение столбца подстановок, в результате чего отображается присоединенное значение вместо отображаемого.

Присоединенное значение, отображаемое в результате запроса

К началу страницы

Ввод простого условия запроса для поля, одновременно допускающего несколько значений

Предположим, нужно увидеть все вопросы, назначенные «Юлии Ильиной». Можно ввести условия запроса в столбец «Условия» в бланке запроса, но при вводе условий для поля подстановок следует ввести присоединенное, а не отображаемое значение. В этом случае присоединенное значение для Юлии Ильиной равно 6. Это соответствующее значение первичного ключа в запросе «Дополнительные сведения о контактах» для Юлии.

Чтобы создать запрос, отображающий вопросы, назначенные Юлии, выполните следующие действия.

  1. Нажмите кнопку Microsoft Office Изображение кнопки Office и выберите Открыть.

  2. В диалоговом окне Открытие файла базы данных выберите и откройте базу данных.

  3. На вкладке Создание в группе Другие нажмите кнопку Конструктор запросов.

    Изображение ленты Access

  4. В диалоговом окне Добавление таблицы выделите таблицу (в данном примере «События»), которая содержит поле, одновременно допускающее несколько значений, и нажмите кнопку Добавить.

  5. Нажмите кнопку Закрыть.

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

  7. На вкладке бланка запроса под полем Назначено в строке «Условия» введите 6. Обратите внимание, что вводится присоединенное, а не отображаемое значение.

    Бланк запроса с условиями для поля, одновременно допускающего несколько значений

  8. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить, чтобы выполнить запрос.

После выполнения запроса результаты отображаются в режиме таблицы. Обратите внимание, что запрос возвращает только строки, в которых отображается «Юлия Ильина».

Результат запроса, в котором значение поля «Назначено» равно 6

При создании запроса в режиме конструктора в Access автоматически генерируется соответствующая инструкция SQL. SQL — это язык запросов, используемый в Access. Можно переключиться в режим SQL, чтобы увидеть инструкцию SQL, выполнив следующие действия.

  1. На вкладке Конструктор в группе Результаты щелкните стрелку под пунктом Режим для отображения меню Режим.

  2. Выберите пункт Режим SQL.

Инструкция SQL выглядит следующим образом.

SELECT Issues.AssignedTo
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6));

Поиск текста вместо кода

Что делать, если ввод кодов кажется обременительным и предпочтительнее ввести имя «Юлия Ильина» в качестве значения поиска? Чтобы это сработало, нужно иметь в результате запроса поле, содержащее текстовое имя. Таким способом можно искать имя «Юлия Ильина» в данном поле.

Поле «Назначено.Значение» использовать нельзя, поскольку его присоединенное значение — это код, и поэтому нужно ввести код для отбора по этому полю.

В данном примере поле «Имя контакта» отсутствует в таблице. Вместо этого оно присутствует в исходном запросе, предоставляющем данные для поля «Назначено», одновременно допускающего несколько значений. Можно присоединить исходную таблицу или запрос поля, одновременно допускающего несколько значений, к таблице, содержащей поле, одновременно допускающее несколько значений, чтобы включить в результат запроса поле (в данном примере поле «Имя контакта») из исходной таблицы или запроса. После этого можно выполнять поиск по этому полю вместо поля, одновременно допускающего несколько значений.

  1. Нажмите кнопку Microsoft Office Изображение кнопки Office и выберите Открыть.

  2. В диалоговом окне Открытие файла базы данных выберите и откройте базу данных.

  3. На вкладке Создание в группе Другие нажмите кнопку Конструктор запросов.

    Изображение ленты Access

  4. В диалоговом окне Добавление таблицы выберите таблицу (в данном примере «Вопросы»), содержащую поле, одновременно допускающее несколько значений, а затем нажмите кнопку Добавить.

  5. В диалоговом окне Добавление таблицы перейдите на вкладку Запросы, а затем выберите запрос (в данном примере это запрос «Дополнительные сведения о контактах»), который является источником для поля, одновременно допускающего несколько значений, а затем нажмите кнопку Добавить.

  6. Нажмите кнопку Закрыть.

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

  8. Если линия связи между полем «Код» из запроса «Дополнительные сведения о контактах» и полем «Назначено.Значение» не видна, как показано ниже, щелкните и перетащите указатель из поля «Код» запроса «Дополнительные сведения о контактах» в поле «Назначено.Значение» таблицы «Вопросы».

    Будет отображена линия связи.

    Если есть другие линии связи, удалите их. Чтобы удалить линию связи, щелкните ее для выделения, а затем нажмите клавишу DEL.

  9. В бланке запроса под полем Имя контакта в строке «Условия» введите «Юлия Ильина».

    Бланк запроса с условиями поля «Назначено», содержащий "Юлия Ильина"

  10. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить, чтобы выполнить запрос.

После выполнения запроса результаты отобразятся в режиме таблицы. Обратите внимание, что запрос возвращает только строки, в которых отображается «Юлия Ильина». Этот метод работает, т. к. связь между полем «Код» в исходной таблице или запросе и полем «Назначено.Значение» возвращает отдельную строку для каждого значения поля, одновременно допускающего несколько значений; каждая строка также содержит поле «Имя контакта» с полным именем. Поскольку поле «Имя контакта» — это вычисляемое поле, а не поле подстановок, оно не имеет присоединенного и отображаемого значений. У него есть только одно значение  — имя контакта. Так можно найти соответствующий текст (в данном случае — «Юлия Ильина»).

Результат запроса с полем «Назначено», содержащий "Юлия Ильина"

При создании запроса в режиме конструктора в Access автоматически генерируется соответствующая инструкция SQL. SQL — это язык запросов, используемый в Access. Можно переключиться в режим SQL, чтобы увидеть инструкцию SQL, выполнив следующие действия.

  1. На вкладке Конструктор в группе Результаты щелкните стрелку под пунктом Режим для отображения меню Режим.

  2. Выберите пункт Режим SQL.

Инструкция SQL выглядит следующим образом.

SELECT Issues.Title, Issues.AssignedTo 
FROM [Contacts Extended] INNER JOIN Issues ON
[Contacts Extended].ID = Issues.AssignedTo.Value
WHERE ((([Contacts Extended].[Contact Name])=
"Kelly Rollin"));

К началу страницы

Поиск нескольких значений в поле, одновременно допускающем несколько значений

Иногда нужно найти соответствие для нескольких значений. Предположим, нужно увидеть вопросы, для которых «Юлия Ильина» и «Инна Ожогина» присутствуют среди значений поля «Назначено». Присоединенное значение для Юлии Ильиной — 6, а для Инны Ожогиной — 10. Чтобы указать несколько условий для поля, одновременно допускающего несколько значений, применяются операторы AND и OR.

Ниже описан порядок создания запроса.

  1. Нажмите кнопку Microsoft Office Изображение кнопки Office и выберите Открыть.

  2. В диалоговом окне Открытие файла базы данных выберите и откройте базу данных.

  3. На вкладке Создание в группе Другие нажмите кнопку Конструктор запросов.

  4. В диалоговом окне Добавление таблицы выберите таблицу (в данном примере «Вопросы»), содержащую поле, одновременно допускающее несколько значений, а затем нажмите кнопку Добавить.

  5. Нажмите кнопку Закрыть.

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

  7. В сетке запроса, в разделе поля «назначено», в строке условие отбора введите 6 и 10.

    Запрос, демонстрирующий использование оператора AND в поле, одновременно допускающем несколько значений

  8. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить, чтобы выполнить запрос.

После выполнения запроса результаты отобразятся в режиме таблицы.

Результат запроса, демонстрирующий использование оператора AND в поле, одновременно допускающем несколько значений

В результате отобразятся только вопросы, назначенные обеим сотрудницам: Юлии Ильиной и Инне Ожогиной. При создании запроса в режиме конструктора в Access автоматически генерируется соответствующая инструкция SQL. SQL — это язык запросов, используемый в Access. Можно переключиться в режим SQL, чтобы увидеть инструкцию SQL, выполнив следующие действия.

  1. На вкладке Конструктор в группе Результаты щелкните стрелку под пунктом Режим для отображения меню Режим.

  2. Выберите пункт Режим SQL.

Инструкция SQL выглядит следующим образом.

SELECT Issues.Title, Issues.AssignedTo
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6
And (Issues.AssignedTo.Value)=10));

Использование оператора OR вместо оператора AND

Предположим, нужно изменить запрос, чтобы выводились строки, в которых отображается «Юлия Ильина» или «Инна Ожогина». Следует изменить инструкцию SQL для использования оператора OR вместо оператора AND. Инструкция должна выглядеть следующим образом.

SELECT Issues.Title, Issues.AssignedTo
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6
Or (Issues.AssignedTo.Value)=10));

После выполнения запроса результаты отобразятся в режиме таблицы.

Запрос, в котором используется оператор OR, в поле, одновременно допускающем несколько значений

В результате отобразятся только вопросы, назначенные либо Юлии Ильиной, либо Инне Ожогиной.

К началу страницы

Влияние включения поля «.Значение» в список полей

Важно понимать влияние включения поля « .Значение» в список выводимых столбцов (список SELECT) в запросе. При обработке запроса первым шагом является получение результата без влияния условия WHERE (фильтра). После этого к первоначальному результату применяется фильтр. Поэтому было бы удобнее, чтобы сначала генерировался результат, а потом к нему применялся фильтр в условии WHERE. Рассмотрим следующий пример.

SELECT Issues.Title, AssignedTo
FROM Issues
WHERE NOT AssignedTo.Value = 3;

Первоначальный результат до фильтрации выглядит следующим образом.

Название

Назначено

Вопрос 1

Владимир Егоров, Ольга Костерина

Вопрос 2

Светлана Омельченко, Юлия Ильина, Мария Сергиенко, Инна Ожогина

Вопрос 3

Сергей Климов, Юлия Ильина, Ольга Костерина, Николай Новиков

Вопрос 4

Дмитрий Горноженко, Инна Ожогина

Вопрос 5

Владимир Егоров, Светлана Омельченко

Вопрос 6

Николай Грачев, Юлия Ильина

Вопрос 7

Сергей Климов, Мария Сергиенко

Вопрос 8

Владимир Егоров

Вопрос 9

Юлия Ильина, Инна Ожогина

Вопрос 10

Ольга Костерина, Николай Новиков

После этого к первоначальному результату применяется фильтрация и выбираются строки, не содержащие Владимир Егоров, код которого — 3.

Название

Назначено

Вопрос 2

Светлана Омельченко, Юлия Ильина, Мария Сергиенко, Инна Ожогина

Вопрос 3

Сергей Климов, Юлия Ильина, Ольга Костерина, Николай Новиков

Вопрос 4

Дмитрий Горноженко, Инна Ожогина

Вопрос 6

Николай Грачев, Юлия Ильина

Вопрос 7

Сергей Климов, Мария Сергиенко

Вопрос 9

Юлия Ильина, Инна Ожогина

Вопрос 10

Ольга Костерина, Николай Новиков

Теперь рассмотрим второй пример — включающий поле «.Значение» в список полей. Сначала посмотрим, как присутствие поля «.Значение» меняет первоначальный результат до фильтрации.

SELECT Issues.Title, AssignedTo.Value
FROM Issues
WHERE NOT AssignedTo.Value = 3;

Первоначальный результат до фильтрации выглядит следующим образом.

Название

Назначено.Значение

Вопрос 1 1

Владимир Егоров

Вопрос 1

Ольга Костерина

Вопрос 2

Светлана Омельченко

Вопрос 2

Юлия Ильина

Вопрос 2

Инна Ожогина

Вопрос 2

Мария Сергиенко

Вопрос 3

Ольга Костерина

Вопрос 3

Грачев Николай

Вопрос 3

Юлия Ильина

Вопрос 3

Николай Новиков

Вопрос 4

Инна Ожогина

Вопрос 4

Дмитрий Горноженко

Вопрос 5

Владимир Егоров

Вопрос 5

Светлана Омельченко

Вопрос 6

Юлия Ильина

Вопрос 6

Николай Грачев

Вопрос 7

Грачев Николай

Вопрос 7

Мария Сергиенко

Вопрос 8

Владимир Егоров

Вопрос 9

Юлия Ильина

Вопрос 9

Инна Ожогина

Вопрос 10

Николай Новиков

Вопрос 10

Ольга Костерина

После этого к первоначальному результату применяется фильтрация и выбираются строки, не содержащие Владимир Егоров, код которого — 3.

Название

Назначено.Значение

Вопрос 1

Ольга Костерина

Вопрос 2

Светлана Омельченко

Вопрос 2

Юлия Ильина

Вопрос 2

Инна Ожогина

Вопрос 2

Мария Сергиенко

Вопрос 3

Ольга Костерина

Вопрос 3

Грачев Николай

Вопрос 3

Юлия Ильина

Вопрос 3

Николай Новиков

Вопрос 4

Инна Ожогина

Вопрос 4

Дмитрий Горноженко

Вопрос 5

Светлана Омельченко

Вопрос 6

Юлия Ильина

Вопрос 6

Николай Грачев

Вопрос 7

Грачев Николай

Вопрос 7

Мария Сергиенко

Вопрос 9

Юлия Ильина

Вопрос 9

Инна Ожогина

Вопрос 10

Николай Новиков

Вопрос 10

Ольга Костерина

Представление результата до и после применения фильтра должно помочь в ожидании правильных результатов запроса.

К началу страницы

Подсчет, группировка и использование других статистических функций

Может понадобиться выполнить вычисления по группам значений, хранящимся в поле, одновременно допускающем несколько значений. Например, сколько вопросов назначено каждому лицу? Сколько людей получили каждый вопрос? Этот тип вычислений можно выполнить с помощью статистической функции в запросе «Итоги».

Статистическая функция производит вычисление над набором значений и возвращает одно значение. Например, Sum, Count и Avg — это три статистические функции, используемые для расчета итогов. Можно рассчитать итоги для всех записей или для групп записей. Чтобы рассчитать итоги по группе, в бланке запроса нужно выбрать поле или поля, по которым будут рассчитаны итоги.

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

  1. Нажмите кнопку Microsoft Office Изображение кнопки Office и выберите Открыть.

  2. В диалоговом окне Открытие файла базы данных выберите и откройте базу данных.

  3. На вкладке Создание в группе Другие нажмите кнопку Конструктор запросов.

    Изображение ленты Access

  4. В диалоговом окне Добавление таблицы выделите таблицу (в данном примере «События»), которая содержит поле, одновременно допускающее несколько значений, и нажмите кнопку Добавить.

  5. Нажмите кнопку Закрыть.

  6. Перетащите в бланк запроса поля, которые нужно использовать. В этом примере перетащите поле Назначено.Значение в первый столбец бланка. После этого перетащите поле Название во второй столбец.

  7. На вкладке Конструктор в группе Отображение нажмите кнопку Итоги.

    Строка Итого отобразится на бланке запроса. Операция Группировка отобразится по умолчанию в ячейке Итого под каждым полем в запросе.

  8. На бланке запроса под полем Название в строке Итого выберите операцию Count.

  9. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить, чтобы выполнить запрос.

При создании запроса указывается, какие поля использовать в группировках, а какие — для итогов (вычислений). В данном примере «Назначено.Значение» было полем для группировки, а «Название» — полем для вычисления итога. Для полей, используемых в группировках, выберите операцию Группировка в строке Итого. Для полей, используемых при вычислениях итога, выберите тип вычисления (например Sum или Avg). Обратите внимание, что при применении поля, одновременно допускающего несколько значений, в группировке следует использовать поле «.Значение». В данном примере нельзя применять поле «Назначено» для группировки — следует использовать поле «Назначено.Значение». Также следует использовать поле «.Значение» при сортировке поля, одновременно допускающего несколько значений.

Примечание : При применении поля, одновременно допускающего несколько значений, в группировке следует использовать поле «.Значение». При применении поля, одновременно допускающего несколько значений, в сортировке следует использовать поле «.Значение»

После выполнения запроса результаты отобразятся в режиме таблицы.

Запрос, в котором подсчитываются вопросы, назначенные каждому лицу

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

  1. На вкладке Конструктор в группе Результаты щелкните стрелку под пунктом Режим для отображения меню Режим.

  2. Выберите пункт Режим SQL.

Инструкция SQL выглядит следующим образом.

SELECT Issues.AssignedTo.Value, 
Count(Issues.Title) AS CountOfTitle
FROM Issues
GROUP BY Issues.AssignedTo.Value;

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

  1. Нажмите кнопку Microsoft Office Изображение кнопки Office и выберите Открыть.

  2. В диалоговом окне Открытие файла базы данных выберите и откройте базу данных.

  3. На вкладке Создание в группе Другие нажмите кнопку Конструктор запросов.

    Изображение ленты Access

  4. В диалоговом окне Добавление таблицы выделите таблицу (в данном примере «События»), которая содержит поле, одновременно допускающее несколько значений, и нажмите кнопку Добавить.

  5. Нажмите кнопку Закрыть.

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

  7. На вкладке Конструктор в группе Отображение нажмите кнопку Итоги.

    Строка Итого отобразится на бланке запроса. Операция Группировка в запросе отобразится по умолчанию в ячейке Итого под полем «Название». Операция Выражение отобразится по умолчанию в ячейке Итого под полем «Назначено» — потому что нельзя выполнить операцию «Группировка» для поля, одновременно допускающего несколько значений. Ее можно выполнить только для поля «.Значение», одновременно допускающего несколько значений.

  8. На бланке запроса под полем Назначено в строке Итого выберите операцию Count.

  9. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить, чтобы выполнить запрос.

После выполнения запроса результаты отобразятся в режиме таблицы.

Результат запроса, в котором отображается расчет числа людей, занимающихся одним вопросом

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

  1. На вкладке Конструктор в группе Результаты щелкните стрелку под пунктом Режим для отображения меню Режим.

  2. Выберите пункт Режим SQL.

Инструкция SQL выглядит следующим образом.

SELECT Issues.Title, 
Count(Issues.AssignedTo) AS CountOfAssignedTo
FROM Issues
GROUP BY Issues.Title;

Примечание : В данной инструкции SQL SELECT можно применять и Count(Вопросы.Назначено), и Count(Вопросы.Назначено.Значение) — результат будет одинаковым.

К началу страницы

Использование запроса на добавление с полем, одновременно допускающим несколько значений

С помощью запроса на вставку можно вставить одно значение в поле, одновременно допускающее несколько значений. Например, для решения вопроса нужно добавить «Юлия Ильина» в поле «Назначено», одновременно допускающее несколько значений. Сначала следует определить значение первичного ключа для вопроса и записи контакта Юлия. Предположим, значения равны 10 для вопроса и 6 для Юлии.

Ниже описан порядок создания запроса.

  1. Нажмите кнопку Microsoft Office Изображение кнопки Office и выберите Открыть.

  2. В диалоговом окне Открытие файла базы данных выберите и откройте базу данных.

  3. На вкладке Создание в группе Другие нажмите кнопку Конструктор запросов.

    Изображение ленты Access

  4. В диалоговом окне Добавление таблицы нажмите кнопку Закрыть.

  5. На вкладке Конструктор в группе Результаты щелкните стрелку под пунктом Режим для отображения меню Режим.

  6. Выберите пункт Режим SQL.

  7. В режиме SQL введите следующую инструкцию SQL.

    INSERT INTO Issues ( AssignedTo.[Value] )
    VALUES (6)
    WHERE ID = 10;
  8. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить, чтобы выполнить запрос.

    Access может запросить подтверждение на добавление выбранной строки. Нажмите кнопку Да, чтобы вставить строку, или кнопку Нет для отмены.

Теперь значение Юлия добавлено в поле «Назначено» для данного вопроса. Это единственная форма запроса на вставку, применяющаяся с полем, одновременно допускающим несколько значений.

Примечание : Запрос на добавление применяется для добавления записей из одной таблицы в другую существующую таблицу. В приложении Office Access 2007 нельзя применять запрос на добавление со ссылкой на таблицу, содержащую поле, одновременно допускающее несколько значений. Например, следующий запрос является недействительным.

INSERT INTO [NewIssues] ( ID, Title, AssignedTo ) SELECT Issues.ID, Issues.Title, Issues.AssignedTo FROM Issues;

К началу страницы

Использование запроса на обновление с полем, одновременно допускающим несколько значений

С помощью запроса на обновление можно изменять значения в существующих записях. При использовании запроса на обновление для обновления таблицы, содержащей поля, одновременно допускающие несколько значений, можно изменить одно значение в поле, одновременно допускающем несколько значений, другим. Предположим, нужно обновить поле «Назначено», одновременно допускающее несколько значений, для конкретного вопроса — например, заменить «Юлия Ильина» на «Инна Ожогина». Сначала определяется значение первичного ключа для вопроса и записей контактов Юлия и Инна. Предположим, что 8 — это значение для вопроса, 6 — это значение для Юлия, а 10 — это значение для Инна.

Ниже описан порядок создания запроса.

  1. Нажмите кнопку Microsoft Office Изображение кнопки Office и выберите Открыть.

  2. В диалоговом окне Открытие файла базы данных выберите и откройте базу данных.

  3. На вкладке Создание в группе Другие нажмите кнопку Конструктор запросов.

  4. В диалоговом окне Добавление таблицы нажмите кнопку Закрыть.

  5. На вкладке Конструктор в группе Результаты щелкните стрелку под пунктом Режим для отображения меню Режим.

  6. Выберите пункт Режим SQL.

  7. В режиме SQL введите следующую инструкцию SQL.

    UPDATE Issues 
    SET Issues.AssignedTo.Value = 10
    WHERE (((Issues.AssignedTo.Value)=6)
    AND ((Issues.ID)=8));

    Примечания : 

    • Следует всегда включать предложение WHERE, определяющее только записи, которые нужно обновить. В противном случае будут обновлены записи, которые не следовало изменять. Запрос на обновление, не содержащий предложение WHERE, изменяет все строки в таблице.

    • Можно указать только одно значение для изменения.

  8. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить, чтобы выполнить запрос.

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

Теперь значение Инна Ожогина заменило значение Юлия Ильина в поле «Назначено» для данного вопроса.

К началу страницы

Использование запроса на удаление с полем, одновременно допускающим несколько значений

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

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

  1. Нажмите кнопку Microsoft Office Изображение кнопки Office и выберите Открыть.

  2. В диалоговом окне Открытие файла базы данных выберите и откройте базу данных.

  3. На вкладке Создание в группе Другие нажмите кнопку Конструктор запросов.

  4. В диалоговом окне Добавление таблицы нажмите кнопку Закрыть.

  5. На вкладке Конструктор в группе Результаты щелкните стрелку под пунктом Режим для отображения меню Режим.

  6. Выберите пункт Режим SQL.

  7. В режиме SQL введите следующую инструкцию SQL.

    DELETE Issues.AssignedTo.Value
    FROM Issues
    WHERE (((Issues.AssignedTo.Value)=6));
  8. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить, чтобы выполнить запрос.

    Access может запросить подтверждение на удаление записей. Нажмите кнопку Да, чтобы удалить записи, или кнопку Нет для отмены.

В следующем примере запрос не удаляет записи из таблицы «Вопросы». Он удаляет значение из поля «Назначено», одновременно допускающего несколько значений, в каждой записи, в которой оно встречается. Чтобы удалить записи из таблицы «Вопросы», не указывайте поле после предложения DELETE в инструкции SQL. Например, чтобы удалить все вопросы, в которых значение «Юлия Ильина» присутствует в списке людей, которым назначен вопрос, введите следующую инструкцию SQL.

DELETE 
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6));

Примечание : Будьте осторожны при удалении записей с помощью запроса на удаление. После удаления восстановить записи невозможно. .

К началу страницы

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

Совершенствование навыков
Перейти к обучению
Первоочередный доступ к новым возможностям
Присоединиться к программе предварительной оценки Office

Были ли сведения полезными?

Спасибо за ваш отзыв!

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

×