Запросы с группировкой. Итоговые запросы




Запросы на ВЫБОРКУ

При задании условия отбора можно использовать операторы >, <, =, >= (больше или равно),<= (меньше или равно), <> (не равно), Between, In, Like, And, Or, Not.

Найдем всех молодых (моложе 2 лет) собак.


Обратите внимание! Access работает с разными типами данных: строковыми, числовыми, временными, логическими и др. Чтобы показать, к какому типу он отнес данное условие отбора, Access автоматически заключает строки в кавычки («шар-пей»), даты – в решетки (#01.05.2008#), числа оставляет, как есть (15), а логические проверяет, чтобы были либо ИСТИНА, либо ЛОЖЬ.

Составные условия отбора

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

 

 

А здесь всех щенков (моложе года) шар-пеев.

 

 

 

А кого мы найдем здесь?

 

 

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

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

 

Всех юниоры (которым больше года, но меньше двух лет).

 

 

Оператор LIKE

 

Оператор LIKE позволяет делать отбор по фрагменту строки.

Значит, чтобы Access мог отыскать английских, ирландских сеттеров и сеттеров-гордонов, нужно написать в условии отбора LIKE *сеттер*.

 

 

Запросы из нескольких таблиц


В запросах мы можем объединять данные из нескольких связанных между собой таблиц.

 

Отсев пустых строк


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

 

 

Есть два способа удалить пустые строки.

1. Поставить условие на значение клички собаки Is not Null, т.е. НЕ ПУСТА.

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

 

 

 

Запросы с вычислениями

 

До сих пор мы только отбирали записи по различным условиям. Но Access позволяет не только просматривать данные, записанные в таблицах, но и производить ВЫЧИСЛЕНИЯ: по дате рождения определять возраст; из имени, фамилии и отчества делать фамилию с инициалами; по цене единицы товара и его количества определять общую стоимость покупки; по дате выдачи книги в библиотеке определять величину штрафа при задолженности и многое другое. Для вычислений используются встроенные функции.

Простейшая операция – это сложение строк. Напишем в ячейке выражение для вывода такой фразы: владелец из города город.

Для этого запишем в верхней строке нового столбца области условий: [LastName] + “ из города ” + [City].

 


Имена полей записываются в квадратных скобках, фрагменты строк –

В кавычках, между ними стоят знаки сложения.

 

Выражения для вычислений записываются в самой верхней строке (Поле) области условий. До сих пор мы писали условия в нижних строках (Условия отбора).

 

Чтобы вам не запутаться: в верхней строке мы пишем, ЧТО выводить на экран, а затем (в нижней) – при КАКОМ УСЛОВИИ.

 

Построитель выражений


Чтобы удобнее было редактировать выражения, существует специальный

редактор – «Построитель выражений». Он выглядит так:

 

 

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

 

 

В построителе выражений вы можете выбирать из библиотеки функции:

 

 

и данные из таблиц (можно пользоваться ТОЛЬКО теми таблицами, которые используются в данном запросе и отображены в области данных):

 

 

Когда вы двойным щелчком мыши выбираете из списка имя поля или функцию, Access часто вставляет еще слово «выражение», показывая, что НА ЭТО МЕСТО можно вставить другие функции и имена полей. Не забывайте удалять лишние слова «выражение»!

Мы познакомимся с текстовыми и временными функциями, а также с условным оператором Iif(condition; if-true; if-false).


Текстовые функции позволяют преобразовывать строковые переменные:
Left(«Иванов»; 2) = «Ив» оставляет n левых символов
LCase(«Иванов») = иванов делает все буквы строчными
InStr(1; «Иванов»; «но») = 4 находит подстроку (третий аргумент) в строке (второй аргумент), и равняется позиции (от начала) подстроки в строке
Len («Иванов») = 6 выводит количество символов в строке
StrComp(«Иванов»; «Петров») = -1 сравнивает две строки: если они равны, то выдает 0
и другие…

 

Временные позволяют работать с временными переменными:
Month(#12.04.2007#) = 4
Year(#12.04.2007#) = 2007
Day(#12.04.2007#) = 12.
Now() = 28.04.2008 14:15:42 (текущие дата и время)
Date() = 28.04.2008 (сегодняшняя дата)
DateDiff(«d»; #12.04.2007#; #28.04.2007#) = 16 находит разницу между двумя датами («d» – в днях, “ww”– в неделях, “m” – в месяцах, “yyyy” – в годах и др.)
и другие…

 

Логические обрабатывают условные выражения:
Iif([Age]<=1; «щенок»; «взрослый») аналог функции ЕСЛИ из Ecxel.
и другие…

 

Запросы с параметром


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

 

 

Устроен этот запрос так:

 

 

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

Запросы с группировкой. Итоговые запросы

 

С помощью построителей выражений мы можем производить операции над одной строкой: складывать значения в ячейках, преобразовывать данные.
Но что, если нам надо обработать сразу несколько строк: посчитать сумму баллов, найти количество строк с одинаковым значением заданного поля?
Для этого используется группировка (она очень похожа на подведение итогов в Excel).

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

Count Количество записей, соответствующее ноле которых не содержит величины Null
Мах Максимальное значение
Min Минимальное значение
Avg Среднее значение поля
Sum Сумма значений поля по всем записям

 

 

Теперь сгруппируем собак по породе и посчитаем количество разных кличек в каждой группе:

 

 

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

Добавляем в область таблиц таблицу с оценками (tbMarks). Группируем оценки по турнирному номеру собаки и среди групповых операций выбираем среднее значение Avg (от англ. average – среднее).

Выполните запрос и в режиме просмотра обратите внимание, что столбцы с групповыми операциями имеют двойное название (операция + имя поля). Нам это пригодится при подсчете суммы баллов.

 

 

Осталось посчитать сумму. В новом столбце записываете выражение для суммы, (используя имена полей из этого же запроса!). Не забудьте при этом в строке групповых операций поставить Выражение.

 

 

Можно также округлить значения до одного знака после запятой: Round([Avg-Exterior]+[Avg-Training];1)

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-12-08 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: