Как самостоятельно составлять запросы в microsoft access
Содержание:
- Запросы с параметрами
- 2.4. Microsoft Access 2007
- Легкий путь для новичков
- Групповые операции (перекрёстные запросы в access)
- Запрос с параметрами
- Что такое Алиэкспресс
- Запрос с параметром
- Запрос с параметрами
- Вид запроса в SQL-режиме.
- Расширенный перекрестный запрос
- Дополнительная информация
- SQL-запросы
- Определение критериев, которые должен искать наш запрос
- Определения основных понятий
- Запросы на выборку
- ПримечанияRemarks
Запросы с параметрами
Такие запросы могут быть запросами на выборку или запросами на изменение. В любом случае данный тип запроса перед выполнением уточняет условие у пользователя. Например, запрос с параметрами может использоваться для просмотра итогов поставок для определенного клиента.
Для создания запроса с параметрами в ячейке Условие столбца запроса необходимо поместить выражение ввода параметров (заключенное в квадратные скобки). При запуске запроса Access выведет отдельное диалоговое окно, содержащее текст этого выражения, предлагая ввести параметры. После ввода необходимых данных запрос использует их в качестве ограничительного условия запроса.
Пример 1. Итоги поставок для определенного клиента (на основе запроса Поставки_Запрос — рис 4.15) запрос на выборку.
Рис. 4.28. Запрос с параметром в режиме Конструктор.
Рис. 4.29. Задание параметра
Пример 2. Создание резервной копии данных о поставках за указанный месяц (используем базу Поставки) запрос на изменение. В результате создается новая таблица с именем Копия_. После выполнения запроса ее обязательно надо переименовать (Копия_февраль), т.к. следующее выполнение этого запроса приведет к удалению таблицы Копия_.
Рис. 4.30. Запрос с параметром в режиме Конструктор.
Рис. 4.28. Задание параметра (ввод дат).
12
2.4. Microsoft Access 2007
2.4.5. Создание запросов и поиск информации в базе данных
В СУБД Access 2007 можно создавать queries для отображения требуемых полей из записей одной или нескольких таблиц.
В СУБД Access 2007 применяются различные типы запросов: на выборку, на обновление, на добавление, на удаление, перекрестный query, выполнение вычислений, создание таблиц. Наиболее распространенным является query на выборку. Применяются два типа запросов: query по образцу (QBE) и query на основе структурированного языка запросов (SQL).
Запросы на выборку используются для отбора требуемой пользователю информации, содержащейся в нескольких таблицах. Они создаются только для связанных таблиц. Queries могут основываться как на нескольких таблицах, так и существующих запросах. СУБД Access 2007 включает такие средства создания запросов, как Мастер и Конструктор.
Кроме того, в СУБД Access 2007 существует множество средств для поиска и отображения информации, которая хранится в базе данных. Данные в таблицах можно отсортировать на основе любого поля или комбинации полей. Для извлечения из базы данных необходимых записей можно отфильтровать таблицу, применив средства фильтрации.
На скриншоте (рисунок 1) средства сортировки и фильтрации выделены скругленным прямоугольником красного цвета.
Рис. 1.
Рассмотрим создание запроса на выборку с помощью Конструктора
Для создания нового пустого запроса в режиме конструктора надо щелкнуть на пиктограмме Конструктор запросов (рисунок 2).
Рис. 2.
Откроется активное окно диалога Добавление таблицы (рисунок 3) на фоне неактивного окна «Запрос1». В этом окне можно выбрать таблицы и queries для создания новых запросов.
Рис. 3.
В окне Добавление таблицы следует выбрать несколько таблиц из представленного списка таблиц, на основе которых будет проводиться выбор данных, и щелкнуть на кнопке Добавить. После этого закрыть окно Добавление таблицы, а окно «Запрос1» станет активным (рисунок 4).
Рис. 4.
Окно Конструктора состоит из двух частей – верхней и нижней. В верхней части окна размещается схема данных запроса, которая содержит список связанных таблиц. В нижней части окна находится Бланк построения запроса QBE, в котором каждая строка выполняет определенную функцию.
Переместим имена полей с таблиц-источников в Бланк. Из таблицы Группы студентов переместим поле Название в первое поле Бланка, из таблицы Студенты переместим поле Фамилии во второе поле, а из таблицы Успеваемость переместим поле Оценка в третье поле и из таблицы Дисциплины переместим поле Название в четвертое поле Бланка запросов.
При необходимости можно задать принцип сортировки (по возрастанию или по убыванию) результатов запроса. В строке «Вывод на экран» автоматически устанавливается флажок просмотра информации.
Условия ограниченного поиска или критерий поиска информации вводится в строке «Условия» отбора и строке «Или». Например, введем критерий поиска — «5/A» в строке «Условия» для поля Оценка. В этом случае в результате выполнения запроса на экране будут отображаться все фамилии студентов, которые получили оценку 5/A (рисунок. 5).
Рис. 5.
Далее надо закрыть окно запроса Запрос1, появится окно диалога Сохранить, ответить — Да и ввести имя запроса, например «Успеваемость студентов». Для запуска запроса дважды щелкнем на query «Успеваемость студентов», откроется таблица с результатами выполненного запроса (рис. 6).
Рис. 6.
Далее создаем параметрический query или query с параметрами. Создаем этот query также как и предыдущий, в режиме конструктора, но только в строке Условия отбора для поля Фамилия введем условие отбора в виде приглашения в квадратных скобках, например . В этом случае в результате выполнения запроса на экране будет отображаться фамилия студента и все дисциплины, по которым он получил оценку.
Закрыть окно запроса на выборку. На вопрос о сохранении изменения ответить — Да и ввести имя запроса, например «Параметрический query». Запустим Параметрический query, дважды щелкнув на нем. В открывшемся на экране окне диалога «Введите значение параметра» надо ввести фамилию студента, информацию об успеваемости которого необходимо получить (рис. 8).
Рис. 7.
Затем надо щелкнуть на кнопке ОК, откроется таблица с результатами выполненного запроса (рис. 8).
Рис. 8.
В некоторых случаях для создания запросов можно использовать Мастер запросов. После создания запросов на выборку информации из БД Access 2007 можно приступать к формированию форм.
Далее >>> Раздел: 2.4.6. Создание форм для ввода данных в таблицы базы данных Access 2007
Легкий путь для новичков
Знающий человек за несколько кликов мышью выбирает те компоненты, которые потребуются пользователю для выполнения запроса, а затем быстро формирует реестр, в соответствии с собранными ключевыми значениями. Если это первое знакомство с СУБД, и пользователь не представляет, как создавать запросы в Access, то выбирается программа Мастер.
В данном режиме можно ознакомиться и разобраться со следующими типами запросов:
- Простой.
- Перекрестный.
- Записи без подчиненных.
- Повторяющиеся записи.
Данный выбор осуществляется уже на первом этапе работы с Мастером. А в дальнейшем, следуя четким указаниям, даже начинающий пользователь легко создаст запрос. Познакомимся с его разновидностями.
Групповые операции (перекрёстные запросы в access)
Аксесс довольно сложная программа. Это подтверждает тот факт, что в интернете можно найти массу информации по ней. Однако, вы знаете что на самом деле достаточно знать лишь 20% инструментов, чтобы создавать и настраивать 80% баз данных в программе? И научиться этому можно после изучения 40 специальных видеоуроков, в которых описана самая суть без воды.
При помощи перекрёстного запроса вычисляются итоговые значения (суммы, количество значений, минимальные и максимальные значения и т. д.) данных и группируются по заголовкам столбцов и по заголовкам строк. Анализ информации значительно упрощается.
В перекрёстном запросе обычно три поля: поле заголовка столбцов, поле заголовка строк и поле итогового содержимого ячеек.
По умолчанию строка «Групповая операция» в режиме конструктора скрыта.
Группировка
Инструкция «Группировка» разбивает результаты запроса по каждому уникальному значению поля (полей). Например, если в поле Страна встречается 20 раз Литва, 30 раз Польша, 50 раз Чехия, то при группировке по этому полю будет всего три записи – по одной на каждую страну. Если будем добавлять группировку в другие поля, то количество выбранных записей возрастёт, так как программа будет искать уникальное значение не одного, а нескольких полей (например, зададим группировку по странам и по поставщикам. В Литве пять поставщиков, а, следовательно, уникальных записей для Литвы уже будет пять, а не одна).
Инструкция Группировка автоматически задаёт сортировку в алфавитном порядке. Для изменения порядка сортировки надо явно указать программе параметры в строке «Сортировка».
Запрос с параметрами
Это еще одна разновидность сложной процедуры, которая потребует от пользователя определенных навыков работы с базами данных. Одним из главных направлений такого действия является подготовка к созданию отчетов с объемными данными, а также получение сводных результатов. Как создавать запросы в Access 2007 с помощью конструктора, будет рассмотрено ниже.
Начинать данную процедуру по выборке данных нужно с создания простого запроса, чтобы выбрать нужные поля. Далее через режим Конструктора обязательно нужно заполнить поле «Условие отбора» и, уже исходя из внесенного значения, будет осуществляться отбор.
Таким образом, на вопрос о том, как создать запрос с параметром в Access, ответ простой — внести исходные параметры для выборки. Чтобы работать с Конструктором необходимо пользоваться Мастером запросов. Там создается первичные данные для фильтрации, которые служат основой дальнейшей работы.
Что такое Алиэкспресс
Существует несколько способов как заработать на алиэкспресс, а без вложений еще меньше:
- Перепродажа товаров (может потребовать вложений)
- Стать посредником за 10-20% от цены товара
- Партнерская программа.
Рассмотрим все подробней, ведь каждый метод отличается своими нюансами
Особенно рекомендую обратить внимание на последний пункт — там есть одна лазейка, которая позволяет зарабатывать довольно легко и просто
Запрос с параметром
Хотите узнать какие 35 инструментов нужно знать, чтобы научиться создавать базы данных в Аксесс?
Бывает, что в неизменной формуле запроса меняется переменная (дата, процент увеличения, надбавка и т. д.). Вместо того, чтобы каждый раз переписывать меняющееся число в одной и той же формуле, предложим программе каждый раз выводить диалоговое окно для введения конкретной цифры, даты или другой переменной.
Для поля, которое предполагается использовать как параметр, введите в ячейку строки «Условие отбора» выражение с текстом приглашения, заключенным в квадратные скобки.
Например, нам часто нужны сведения по сотрудникам, фамилия которых начинается с определённой буквы. Можно сделать около 30 запросов (для почти всех букв русского алфавита), чтобы получать требуемые данные, но это займёт много времени для создания запросов, загромоздит базу данных и вызовет путаницу. Вместо этого создадим один запрос для формирования списка сотрудников, который будет нас спрашивать, с какой буквы начинающиеся фамилии мы хотим видеть. В поле «Условие отбора» введём: Like & «*». На самом деле, если введём букву «С», условие будет читаться Access как Like «С*». Знак амперсанда «&» указывает на необходимость сцепления введённой буквы с остальными символами искомой ячейки, так как «*» обозначает любое количество символов после «С».
Например, выражение Between And запросит ввести начальную и конечную даты и выдаст все записи, содержащиеся в этом диапазоне (программа распознает разные форматы, например: 01.01.2010 или 01,01,2010 или 01/01/2010). Но для этого в режиме конструктора через меню Запрос – Параметры (можно вызвать через контекстное меню) надо вызвать диалоговое окно «Параметры запроса». В столбце «Параметр» указать правильно название, например , а в столбце «Тип данных» указать требуемый тип, в нашем случае «Дата/время». Как правило, указываются параметры для числовых и полей дата/время.
Ещё пример: Like «??.» & & «.????». Программа попросит ввести номер месяца года и выдаст все записи, относящиеся к этому месяцу. Если в параметре ввести знак звёздочки «*», то будут выбраны дни рождений за все месяцы.
Запрос может не работать, если формат даты в условии задан 00.00.0000, а в настройках панели управления установлен 00/00/0000. Тогда надо вместо точек добавить ещё по одному вопросу.
Запрос с параметрами
Это еще одна разновидность сложной процедуры, которая потребует от пользователя определенных навыков работы с базами данных. Одним из главных направлений такого действия является подготовка к созданию отчетов с объемными данными, а также получение сводных результатов. Как создавать запросы в Access 2007 с помощью конструктора, будет рассмотрено ниже.
Начинать данную процедуру по выборке данных нужно с создания простого запроса, чтобы выбрать нужные поля. Далее через режим Конструктора обязательно нужно заполнить поле «Условие отбора» и, уже исходя из внесенного значения, будет осуществляться отбор.
Таким образом, на вопрос о том, как создать запрос с параметром в Access, ответ простой — внести исходные параметры для выборки. Чтобы работать с Конструктором необходимо пользоваться Мастером запросов. Там создается первичные данные для фильтрации, которые служат основой дальнейшей работы.
Вид запроса в SQL-режиме.
SQL-режим.
В общем случае для создания произвольного запроса используется универсальный язык. SQL. В предложении этого языка (SELECT Выбрать) можно описать все четыре базовые операции: какие поля и откуда выбрать, какие вычислить, как сгруппировать записи (просуммировать, сосчитать, найти среднее и т.п.) и при каких условиях включить записи в выборку.
Рис. 4.10. Запрос Телефоны в режиме SQL.
На рис 4.10 представлен эквивалент запроса Телефоны в форме SQL (такое представление запроса можно установить, выбрав для открытой таблицы запроса в меню Вид режим SQL). Сравнение SQL-выражения и режима конструктора запроса является хорошим способом познакомиться с логикой построения запроса.
Реально в Access для построения запросов используется механизм QBE (QueryByExample Запрос по образцу) метод создания запросов, изобретенный IBM еще в 70-е годы.
Тем не менее, полезно знать некоторые элементы языка SQL, так как с его помощью можно создавать запросы, которые невозможно создать с помощью бланка запроса.
Простые ключевые слова языка SQL.
Рассмотрим подробнее запрос на рис.4.10. Использование ключевого слова SELECT свидетельствует о том, что это запрос. Далее в выражении перечислены четыре поля запроса, разделенные запятыми. Ключевое слово SELECT указывает источник данных (таблица Клиенты), а точка с запятой указывает на окончание выражения.
Ключевые слова SQL обычно представлены строчными буквами. (У операторов строчной является только первая буква). Самыми распространенными ключевыми словами являются:
- AS. Задает оператор, указывающий выражение или значение, а также имя поля, с которым оно связано (иногда называют псевдонимом);
- DISTINCTROW. Предотвращает дублирование записей из запроса;
- FROM. Задает оператор, указывающий таблицу или запрос, из которых извлекаются поля;
- GROUPBY. Указывает поле, которое используется для группировки записей в итоговой и перекрестной таблице;
- ORDERBY. Указывает поле, которое определяет порядок хранения записей.
- SELECT. Задает оператор, содержащий список полей, включаемых в запрос;
- UNION. Объединяет два набора записей в один;
- WHERE. Задает оператор с условием (или набором условий) для фильтрации записей запроса.
Расширенный перекрестный запрос
Продолжаем усложнять ситуацию. Еще труднее для понимания является информация о том, как создавать запросы в Access, если присутствует несколько таблиц с данными. Перекрестный запрос уже рассматривался выше, как один из вариантов работы с Мастером. Однако, и в режиме «Конструктора» можно создавать подобный запрос.
Для этого необходимо нажать «Конструктор запросов» — «Перекрестный».
Открывается меню добавления исходных таблиц, а также возможность заполнения выборочных полей
Единственное, на что следует обратить внимание, – пункты «групповая операция» и «перекрестная таблица». Их нужно заполнять правильно, иначе процедура не будет выполнена корректно
Перекрестные запросы – это наиболее простой способ поиска и выборки информации из нескольких источников данных, плюс с возможностью формирования диаграмм и графиков.
Более того, при использовании данной процедуры быстрее выполняется поиск, даже с несколькими вариантами развития.
Конечно, присутствуют и «подводные камни», которые могут помешать в работе. Например, при создании запроса на сортировку базы данных по значению столбцов система выдает ошибку. То есть доступна только сортировка по стандартным пунктам – «возрастание и убывание».
Дополнительная информация
Способ 1
Первый метод использует функцию DSum и условия в запросе для создания суммы с накоплением с течением времени. Функция DSum суммирует текущую запись и все предыдущие записи. Когда запрос перемещается на следующую запись, функция DSum выполняется снова и обновляет общий итог.
Следующий пример запроса использует таблицу Orders из учебной базы данных Northwind для создания суммы стоимости доставки за каждый месяц 1997. В целях повышения производительности примеры данных ограничены одним годом. Так как функция DSum выполняется один раз для каждой записи в запросе, для завершения обработки запроса может потребоваться несколько секунд (в зависимости от скорости компьютера). Чтобы создать и запустить этот запрос, выполните указанные ниже действия.
Откройте учебную базу данных Northwind.
Создайте новый запрос на выборку и добавьте таблицу Orders .
В меню вид выберите пункт итоги.
Note (Примечание ) В Access 2007 щелкните итоги в группе Показать/скрыть на вкладке конструктор .
В первом столбце бланка запроса введите следующее выражение в поле поле и выберите следующие значения для полей «Итого», «Сортировать» и «Показать»:
В выражении в поле поле отображается и сортируется часть года поля OrderDate.
Во втором столбце бланка запроса введите в поле поле следующее выражение и выберите следующие параметры для полей «Итого», «Сортировать» и «Показать»:
Выражение в поле поля сортирует и отображает часть месяца поля Дата заказа в виде целого значения от 1 до 12.
В третьем столбце бланка запроса введите в поле поле следующее выражение, а для полей Итого и Show выберите следующие параметры.
Note (Примечание ) В следующем примере знак подчеркивания (_) в конце строки используется в качестве символа продолжения строки. При повторном создании этого примера удалите знак подчеркивания в конце строки.
Выражение в поле поле использует функцию DSum () для суммирования поля фрахта, если значения в полях Амонс и Айеар меньше или равны текущей записи, обрабатываемой запросом.
В четвертом столбце бланка запроса введите следующее выражение в поле поле и выберите следующие значения для полей «Итого», «Сортировать» и «Показать»:
Выражение в поле поля отображает каждый месяц в текстовом формате, например Январь, фев, Мар и т. д.
В столбце пятый в бланке запроса введите следующее выражение в поле поле и выберите следующие значения для полей «Итого», «условия» и «Показать»:
Выражение в поле поля фильтрует набор записей запроса, чтобы включить данные только из 1997.
Выполните запрос
Обратите внимание, что в поле Рунтот отображаются следующие записи с накопленной суммой:
Способ 2
Второй метод использует итоговый запрос с функцией DSum () для создания итоговой суммы по группе.
Приведенный ниже пример запроса использует таблицу «заказы» для суммирования затрат на фрахт для каждого сотрудника, а также для расчета скользящей суммы фрахта. Чтобы создать и запустить запрос, выполните указанные ниже действия.
Откройте учебную базу данных Northwind. mdb.
Создайте новый запрос на выборку и добавьте таблицу Orders.
В Виевмену щелкните итоги.
Note (Примечание ) В Access 2007 щелкните итоги в группе Показать/скрыть на вкладке конструктор .
В первом столбце бланка запроса добавьте следующее поле в поле поле и выберите следующие параметры для полей «Итого» и «Показать»:
В этом поле данные группируются по КодСотрудника.
Во втором столбце бланка запроса добавьте следующее поле в поле поле и выберите следующие параметры для полей «Итого» и «Показать»:
Это поле суммирует данные доставки.
В третьем столбце бланка запроса введите в поле поле следующее выражение, а для полей Итого и Show выберите следующие параметры.
Note (Примечание ) В следующем примере знак подчеркивания (_) в конце строки используется в качестве символа продолжения строки. При повторном создании этого примера удалите знак подчеркивания в конце строки.
Выражение в поле поле использует функцию DSum () для суммирования поля фрахта, когда EmployeeID меньше текущего Емпалиас, а затем форматирует поле в долларах.
Выполните запрос
Обратите внимание, что в поле Рунтот отображаются следующие записи с накопленной суммой:
SQL-запросы
В Access 2013 и других версий запросы выполняются при помощи языка структурированных запросов SQL.
Для создания SQL-запросов необходимо перейти в режим конструктора, затем на кнопке «Вид» выбрать «Режим SQL». В результате появится диалоговое окно, в котором в поле Select вводим названия столбцов, а в поле From — то, что будет выводиться в строках, например названия поставщиков (если первый столбец «Название»).
В Access используется не чистый SQL, а его диалект Jet-SQL. Основными инструкциями для запросов в этом языке являются: SELECT, по которому осуществляется выборка из записей по определенным условиям (названия полей исходных таблиц, переносящихся в результирующую таблицу), UPDATE — используется с целью редактирования записей, DELETE — для удаления каких-либо указанных записей, CREATE — для создания новых объектов БД. В MS Access также используются TRANSFORM для построения перекрестных запросов, WITH OWNER-ACCESS OPTION для создания специальных запросов пользователем, не имеющем доступа к таблицам, к которым должен быть доступ у этого запроса, IN (для обеспечения связи с удаленной БД), DISTINCTROW (создание запроса с возможным объединением данных). Также могут применяться итоговые функции SQL, встроенные функции Access и VBA.
Определение критериев, которые должен искать наш запрос
Когда вы устанавливаете критерии для поля в запросе, вы в основном применяете к нему фильтр, который сообщает запросу получить только информацию, соответствующую вашим критериям. Просмотрите список полей, которые мы включаем в этот запрос. Как и где мы можем установить критерии, которые наилучшим образом помогут нам ответить на наш вопрос?
Мы не хотим, чтобы клиенты, которые живут в нашем городе, Роли, поэтому нам нужен критерий, который вернет все записи, кроме тех, которые были с Роли в области города. Мы не хотим, чтобы клиенты, которые живут слишком далеко, тоже. Все телефонные номера в области начинаются с кода зоны 919 , поэтому мы также будем включать критерии, которые будут возвращать только записи, чьи записи из поля номера телефона начинаются с 919 . Это должно гарантировать, что мы отправим купоны только тем клиентам, которые живут достаточно близко, чтобы действительно вернуться и использовать их.
Мы не будем устанавливать критерии для поля идентификатора заказа или любых других полей, потому что мы хотим видеть все заказы, сделанные людьми, которые отвечают двум критериям, которые мы только что установили.
Чтобы писать запросы, вам нужно будет установить критерии на языке, который понимает Access . Как вы можете видеть на изображении выше, наши критерии, требующие номеров телефонов, начинаться с 919, должны быть напечатаны следующим образом: Like («919 *») . Чтобы узнать, как писать дополнительные критерии, обратитесь к нашему Краткому справочному руководству по критериям критериев запроса в разделе « Дополнительно » этого руководства. Руководство содержит несколько наиболее часто используемых критериев в запросах Access.
Определения основных понятий
Без базовых знаний об элементах управления и объектах, использующихся при создании и конфигурации БД, нельзя успешно понять принцип и особенности настройки предметной области. Поэтому сейчас я постараюсь простым языком объяснить суть всех важных элементов. Итак, начнем:
- Предметная область – множество созданных таблиц в базе данных, которые связаны между собой с помощью первичных и вторичных ключей.
- Сущность – отдельная таблица базы данных.
- Атрибут – заголовок отдельного столбца в таблице.
- Кортеж – это строка, принимающая значение всех атрибутов.
- Первичный ключ – это уникальное значение (id), которое присваивается каждому кортежу.
- Вторичный ключ таблицы «Б» – это уникальное значение таблицы «А», использующееся в таблице «Б».
- SQL запрос – это специальное выражение, выполняющее определенное действие с базой данных: добавление, редактирование, удаление полей, создание выборок.
Теперь, когда в общих чертах есть представление о том, с чем мы будем работать, можно приступить к созданию БД.
Запросы на выборку
Создание запросов в Access данного вида предполагает построение таблицы, содержащей такие же структурные элементы, как и обычная. Она создается на базе фактических данных.
Результаты представляют собой динамический набор данных, в связи с чем при закрытии набора записи «исчезают», оставаясь в первоначальных таблицах. Сохранение данных запросов означает сохранение их структуры.
Данные запросы формируются указанием полей и таблиц, их содержащих, включаемых в запрос, описанием рассчитываемых полей, совершаемых групповых операций над первоначальными записями, и формированием условий отбора (например, с какой по какую дату осуществлялась реализация определенной группы товаров).
Создание запросов в MS Access данного вида предполагает, что их можно создать вручную или при помощи «Мастера создания запросов».
Для определения полей и таблиц, включаемых в запрос, переходим в режим конструктора.
Для перехода в режим конструктора в Access 2013 нужно в области навигации кликнуть контекстной кнопкой мыши на имени формы и выбрать «Конструктор». Нажав ALT+F8, можно вызвать «Список полей», из которых поля можно перетащить непосредственно в форму.
ПримечанияRemarks
Вы можете использовать вложенный запрос вместо выражения в списке полей оператора SELECT или предложении WHERE или HAVING.You can use a subquery instead of an expression in the field list of a SELECT statement or in a WHERE or HAVING clause. Во вложенном запросе вы используете оператор SELECT для предоставления набора одного или нескольких определенных значений для оценки в выражении для предложения WHERE или HAVING.In a subquery, you use a SELECT statement to provide a set of one or more specific values to evaluate in the WHERE or HAVING clause expression.
Используйте предикат ANY или SOME, которые являются синонимами, для получения записей в основном запросе, который удовлетворяет сравнению с любыми записями, полученными во вложенном запросе.Use the ANY or SOME predicate, which are synonymous, to retrieve records in the main query that satisfy the comparison with any records retrieved in the subquery. Следующий пример возвращает все продукты, для которых цена за единицу выше, чем у любого продукта, продаваемого со скидкой 25 процентов или более:The following example returns all products whose unit price is greater than that of any product sold at a discount of 25 percent or more:
Используйте предикат ALL для получения записей в основном запросе, который удовлетворяет сравнению со всеми записями, полученными во вложенном запросе.Use the ALL predicate to retrieve only those records in the main query that satisfy the comparison with all records retrieved in the subquery. Если вы изменили предикат с ANY на ALL в предыдущем примере, запрос будет возвращать только те продукты, у которых цена за единицу больше, чем у всех продуктов, проданных со скидкой 25 процентов или более.If you changed ANY to ALL in the previous example, the query would return only those products whose unit price is greater than that of all products sold at a discount of 25 percent or more. Это гораздо более строгое ограничение.This is much more restrictive.
Используйте предикат IN для получения только тех записей в основном запросе, для которых определенная запись во вложенном запросе содержит одинаковое значение.Use the IN predicate to retrieve only those records in the main query for which some record in the subquery contains an equal value. В примере ниже возвращаются все продукты со скидкой 25 процентов или больше:The following example returns all products with a discount of 25 percent or more:
С другой стороны, вы можете использовать NOT IN для получения только тех записей в основном запросе, для которых ни одна запись во вложенном запросе не содержит одинаковое значение.Conversely, you can use NOT IN to retrieve only those records in the main query for which no record in the subquery contains an equal value.
Используйте предикат EXISTS (с необязательным зарезервированным словом NOT) в сравнениях ИСТИНА/ЛОЖЬ, чтобы определить, возвращает ли вложенный запрос какие-либо записи.Use the EXISTS predicate (with the optional NOT reserved word) in true/false comparisons to determine whether the subquery returns any records.
Также можно использовать псевдонимы имени таблицы во вложенном запросе для ссылки на таблицы, указанные в предложении FROM за пределами вложенного запроса.You can also use table name aliases in a subquery to refer to tables listed in a FROM clause outside the subquery. Пример ниже возвращает имена сотрудников, чья заработная плата равна или выше средней заработной платы всех сотрудников на аналогичной должности.The following example returns the names of employees whose salaries are equal to or greater than the average salary of all employees having the same job title. Для таблицы «Сотрудники» присваивается псевдоним «T1»:The Employees table is given the alias «T1»:
В приведенном выше примере зарезервированное слово AS не является обязательным.In the preceding example, the AS reserved word is optional.
Некоторые вложенные запросы поддерживаются в перекрестных запросах, в частности, в качестве предикатов (например в предложении WHERE).Some subqueries are allowed in crosstab queries— specifically, as predicates (those in the WHERE clause). Вложенные запросы в виде выходных данных (в списке SELECT) не поддерживаются в перекрестных запросах.Subqueries as output (those in the SELECT list) are not allowed in crosstab queries.