ОДНОТАБЛИЧНЫЕ ЗАПРОСЫ НА ВЫБОРКУ ДАННЫХ 1. Создание запроса на выборку с логическими операциями в условии отбора 2. Создание запроса с вычисляемым полем 3. Конструирование запроса с функцией <Count> 4. Запрос с функцией <Sum> 5. Задание условий отбора в запросах с групповыми операциями 6. Просмотр инструкции SQL для существующего запроса 7. Контрольное задание 8. Контрольные вопросы Создание запроса на выборку с логическими операциями в условии отбора 1. Предположим, что из таблицы ЛИСТОК необходимо просмотреть номера листков нетрудоспособности и фамилии, имена и отчества пациентов, начатые в сентябре с кодом причины нетрудоспособности 1, а также выбрать листки нетрудоспособности, выписанные в ноябре с кодом причины нетрудоспособности 2. 2. Для создания запроса на вкладке Создание нажмите кнопку Конструктор запросов. 3. Появляется диалоговое окно Добавление таблицы. В диалоговом окне выберите таблицу ЛИСТОК и нажмите кнопку Добавить. Выбранная таблица будет отображена в области схемы данных запроса. Закройте окно Добавление таблицы. 4. В окне конструктора дважды щелкните на полях НОМ_ЛН, ФАМ_Б, ИМЯ_Б, ОТЧ_Б, К_ПРЧ и НАЧ_ЛН из списка полей таблицы ЛИСТОК выбранные поля появятся в столбцах запроса в строках Поле. 5. Если Вы по ошибке выбрали в бланк запроса ненужное поле, удалите его. Для этого переместите курсор в область маркировки столбца сверху, где он примет вид черной стрелки, направленной вниз, и щелкните кнопкой мыши. Столбец выделится. Нажмите клавишу <Del>. 6. В строке Вывод на экран отметьте поля, иначе они не будут видны при выполнении запроса. 7. Сформулированные в задаче условия требуют формирования следующего логического выражения ([НАЧ_ЛН]<1.10.14 AND [К_ПРЧ]=1) OR ([НАЧ_ЛН]>31.10.14 AND [К_ПРЧ]=2) 8. Запишите условие из первых скобок в соответствующие поля НАЧ_ЛН и К_ПРЧ первой строки Условия отбора. Между условиями находящимися в разных полях одной строки выполняется логическая операция AND (И). Условия из вторых скобок запишите в соответствующих полях НАЧ_ЛН и К_ПРЧ второй строки Условия отбора. Между условиями записанными в разных строках, выполняется логическая операция OR (ИЛИ). 9. Выберите вкладку Конструктор и нажмите кнопку Выполнить. На экране появится окно запроса в режиме таблицы с записями из таблицы ЛИСТОК, отвечающими заданным условиям отбора. 10. Сохраните запрос по команде меню Файл/Сохранить и задав ему имя Пример1. 11. Закройте текущий запрос по команде меню Файл/Закрыть Создание запроса с вычисляемым полем Предположим, что необходимо найти записи о листках нетрудоспособности, в которых общее количество дней превышает 8 суток. Для решения этой задачи рассчитаем разность между датой конца листка нетрудоспособности и началом лиска нетрудоспособности. В ответ включим только те записи, для которых эта разность превысит 8 суток 1. Создайте в режиме конструктора запрос на выборку для таблицы ЛИСТОК. Перетащите в бланк запроса поля НОМ_ЛН, ФАМ_Б, ИМЯ_Б, ОТЧ_Б. 2. Для подсчета продолжительности заболевания создайте вычисляемое поле в пустой ячейке строки Поле, записав выражение: [КОН_ЛН]-[НАЧ_ЛН] 3. Для отбора записей с ненулевым значением разности в вычисляемом поле в строку Условие отбора введите >8. 4. После ввода выражения система по умолчанию формирует имя вычисляемого поля – выражение 1:. Это имя ставится перед формулой [КОН_ЛН]-[НАЧ_ЛН]. Для изменения имени установите курсор в вычисляемом поле бланка запроса и нажмите правую кнопку мыши. В контекстном меню выберите Свойства и в строку Подпись поля введите новое имя поля – Продолжительность заболевания. 5. Сохраните запрос под именем – Заболевание больше 8 суток Конструирование запроса с функцией <Count> Rem: Часто нужно видеть не каждую строку таблицы, а только итоговые значения по группам данных. Групповые операции позволяют выделить группы записей с одинаковыми значениями в указанных полях и использовать для некоторых полей этих групп одну из статистических функций. В Access предусматривается десять статистических функций: Sum – сумма значений некоторого поля для группы; Avg – среднее от всех значений поля в группе; Max, Min – максимальное и минимальное значение поля в группе; Count – число значений поля в группе без учета пустых значений; StDev – среднеквадратичное отклонение от среднего значения поля в группе; Var – дисперсия значений поля в группе; First, Last – значение поля из первой или последней записи в группе. Определим количество врачей в отделениях 1. Создать в режиме конструктора запрос на выборку для таблицы ВРАЧ 2. Из списка таблицы ВРАЧ выберите поле КОТД – код отделения. По этому полю будет проводиться группировка 3. Выберите поле в бланк запроса поле ИД_ВРАЧ, по которому будет вычисляться функция Count для подсчета числа врачей в отделении. 4. В группе Тип запроса нажмите кнопку Тип запроса: перекрестный. В бланке запросов появится строка Групповые операции, в которой для всех полей записано Группировка. Затем нажмите кнопку Тип запроса: выбор. 5. Заменить слово группировка в столбце ИД_ВРАЧ на Count. Для этого вызовите список и выберите эту функцию 6. Выполните запрос командой Выполнить. 7. Замените подпись Count_НС на Фактическое число студентов. Для ввода этой подписи в бланке запроса установите курсор мыши на поле НС и нажмите правую кнопку. В контекстном меню выберите Свойства. В окне Свойства поля наберите в строке Подпись – Количество врачей. 8. Сохраните запрос на выборку под именем Количество врачей в отделении. Запрос с функцией <Sum> Подсчитать общее количество дней нетрудоспособности пациентов у врачей выписавших листки нетрудоспособности 1. Сформировать запрос для таблицы ЛИСТОК с функцией Sum для вычисляемого поля [КОН_ЛН][НАЧ_ЛН]– продолжительность заболевания 2. Из списка таблицы ЛИСТОК выберите в бланк запроса поле ИД_ВРАЧ и поле НОМ_ЛН. Создаейте вычисляемого поля [КОН_ЛН]-[НАЧ_ЛН] по которому будет вычисляться функция Sum для подсчета количества дней нетрудоспособности. 3. В группе Тип запроса нажмите кнопку Тип запроса: перекрестный. В бланке запросов появится строка Групповые операции, в которой для всех полей записано Группировка. Затем нажмите кнопку Тип запроса: выбор 4. Заменить слово группировка в столбце НОМ_ЛН на Count. Для этого вызовите список и выберите эту функцию. 5. Заменить слово группировка в столбце [КОН_ЛН]-[НАЧ_ЛН]на Sum. Для этого вызовите список и выберите эту функцию. 6. Выполните запрос командой Выполнить. 7. Замените подпись Выражение1: [КОН_ЛН]-[НАЧ_ЛН] на Количество дней нетрудоспособности. 8. Сохраните запрос на выборку под именем Количество дней нетрудоспособности. Задание условий отбора в запросах с групповыми операциями Подсчитать общее количество дней нетрудоспособности пациентов у врачей выписавших листки нетрудоспособности в октябре и ноябре месяце. 1. Создать в режиме конструктора запрос на выборку для таблицы ЛИСТОК 2. Из списка таблицы ЛИСТОК выберите в бланк запроса поле ИД_ВРАЧ, НОМ_ЛН, НАЧ_ЛН. 3. В группе Тип запроса нажмите кнопку Тип запроса: перекрестный. В бланке запросов появится строка Групповые операции, в которой для всех полей записано Группировка. Затем нажмите кнопку Тип запроса: выбор 4. Заменить слово группировка в столбце НОМ_ЛН на Count. Для этого вызовите список и выберите эту функцию. 5. Заменить слово группировка в столбце НАЧ_ЛН на Условие. Для этого вызовите список и выберите эту функцию. 6. В поле Условие отбора запишите условие >#1.10.14#. 7. Выполните запрос командой Выполнить. 8. Сохраните запрос под именем – Пример2 Просмотр инструкции SQL для существующего запроса 1. Откройте сохраненный ранее запрос Пример1 в режиме конструктора 2. Для перехода в режим SQL выполните команду Режим/SQL 3. Перейдите в режим конструктора, внесите изменения в бланк запроса например, путем удаления поля ЧС 4. Вернитесь в режим SQL и посмотрите, как изменилась инструкция SQL 5. Чтобы убедиться, что запросы можно редактировать в режиме SQL, а не только в режиме конструктора, внесите изменения в инструкцию SQL, снова добавив список полей ИМЯ_Б, ОТЧ_Б 6. Затем перейдите в режим конструктора и убедитесь, что в бланк запроса удалены поля ИМЯ_Б, ОТЧ_Б 7. Просмотрите и проанализируйте SQL инструкции других запросов Контрольное задание Выполнить расчет количество листков нетрудоспособности по коду причины у каждого врача в сентябре месяце и сохраните его под именем Статистика за сентябрь.