Однотабличные запросы на выборку данных

advertisement
ОДНОТАБЛИЧНЫЕ ЗАПРОСЫ НА ВЫБОРКУ ДАННЫХ
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 инструкции других запросов
Контрольное задание
Выполнить расчет количество листков нетрудоспособности по коду причины у каждого врача в сентябре
месяце и сохраните его под именем Статистика за сентябрь.
Download