Создание связей. Запросы: Методические указания к выполнению лабораторной работы № 5, страница 4

v Сохраните запрос (Файл®Сохранить как) с именем Пенсионеры.

Рис.15

Рис.16


2.4 ПОСТРОЕНИЕ ЗАПРОСА С ГРУППИРОВАНИЕМ ЗАПИСЕЙ И ИСПОЛЬЗОВАНИЕМ СТАТИЧЕСКИХ ФУНКЦИЙ

Задача №7. Выдать список сотрудников и количество детей каждого сотрудника.

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

Порядок работы:

Ø В окне базы данных для объекта Запросы выберите Создать, затем Конструктор.

Ø Добавьте запрос Личная_Дети в окно конструктора. Нажмите кнопки Добавить, Закрыть.

Ø В бланке запросов в строке Поле выберите ФИО.

Ø Щелкните правой кнопкой мыши на поле ФИО и выберите Групповые операции. В результате появится строка Групповые операции и слово Группировка для поля ФИО. Это означает, что будет выполняться группирование записей, имеющих одинаковые значения в Поле ФИО. Количество детей сотрудника равно количеству повторений его фамилии в таблице.

Ø В строке Сортировка для поля ФИО откройте список и выберите режим сортировки По возрастанию.

Ø Для того чтобы подсчитать количество записей с одинаковыми фамилиями и затем отобразить их в таблице, создайте дополнительное поле – в строке Поле во втором столбце напишите: ФИО.

Ø Щелкните правой кнопкой мыши на втором столбце и выберите Групповые операции, а затем откройте список Группировка и выберите статическую функцию COUNT – подсчет количества записей в группе.

Ø Задайте альтернативное имя для второго поля ФИО. Для этого щелкните правой кнопкой на этом поле и выберите пункт Свойства. Откроется диалоговое окно Свойства поля (рис.17). Щелкните в строке Подпись и нажмите комбинацию клавиш SHIFT+F2 для расширения области ввода (рис.18). Введите текст Количество детей, нажмите кнопку ОК. Закройте окно Свойства поля.

                       

Рис.17

     

Рис.18

Ø Сохраните запрос под именем Количество детей (Файл ® Сохранить как).

Ø Щелкните кнопку Запуск на панели инструментов. Результат на рис. 19

Рис.19

Задача №8.  Выдать таблицу текущих назначений сотрудников.

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

Для создания запроса потребуется таблица ЛИЧНАЯ, РАБОТА и ПОДРАЗДЕЛЕНИЯ.

Порядок работы:

Ø В окне базы данных для объекта Запросы нажмите кнопку Создать®Конструктор.

Ø В окно Конструктора добавьте таблицы ЛИЧНАЯ, РАБОТА и ПОДРАЗДЕЛЕНИЯ.

Ø В бланк запросов строку Поля перетащите следующие поля: из таблицы ЛИЧНАЯ КодСотр, ФИО, из таблицы РАБОТАДатаРаб, Должность, Оклад, из таблицы ПОДРАЗДЕЛЕНИЯНаименПолн.

Ø  Для поля КодСотр снимите флажок в строке Вывод на экран.

Ø Задайте режим группировки из пункта меню Вид®Групповые операции.

Ø Для поля ФИО и ДатаРаб задайте сортировку по возрастанию.

Ø Для полей ДатаРаб, Должность, Оклад, НаименПолн в строке Групповая операция из списка выберите статистическую операцию LAST (последний), которая означает выбор последнего значения из группы (рис.20).

Рис. 20

Ø Для поля Оклад в строке Условие отбора задайте >0 (больше нуля) – это означает, что уволенных в запрос не включать (в таблице РАБОТА в записи уволенного сотрудника в поле Оклад задается нулевое значение).

Ø Проверьте работу запроса, нажав кнопку Вид на панели инструментов и выбрав Режим таблицы.

Ø Если запрос работает правильно, сохраните его с именем Работа_текущая. Результат показан на рис.21.

         

Рис.21