Роддом (1). Информатика Курсовая работа по дисциплине Базы данных Тема Роддом ст гр. Аис32 Фролов Сергей Игоревич РостовнаДону Содержание
Скачать 0.84 Mb.
|
3.2. ЗапросыДля решения поставленной задачи разработаны SQL-запросы, описанные ниже. Запрос «Загрузка врачей за период» подсчитывает количество пациенток по каждому врачу за заданный период времени. Период задается с помощью специальной формы, значения полей которой являются параметрами данного запроса (а также нескольких других запросов, имена которых заканчиваются словами «… за период»). Вид запроса в режиме конструктора представлен на рис. 4, а ниже приведен текст запроса на языке SQL: Рис. 4. Запрос «Загрузка врачей за период» в режиме конструктора SELECT Врач.ФИО, Count(Стационар.Код) AS Пациенток FROM Врач INNER JOIN Стационар ON Врач.КодВрача = Стационар.Врач WHERE (((Стационар.Начало)<=[Forms]![Отчеты за период]![Конец]) AND ((Стационар.Конец)>=[Forms]![Отчеты за период]![Начало] Or (Стационар.Конец) Is Null)) GROUP BY Врач.ФИО ORDER BY Врач.ФИО; Результаты запроса «Загрузка врачей за период» (в этом и последующих запросах за период в качестве периода указывался февраль 2007 г.):
Запрос «Загрузка палат» подсчитывает для каждой палаты количество размещенных в ней пациенток. Для этого в запросе подсчитывается общее число помещавшихся в палату пациенток (непустых значений поля Код), общее число выписанных пациенток (непустых значений поля Переведена), и на основании этих данных — количество пациенток, находящихся в палате на текущий момент. Вид запроса в режиме конструктора представлен на рис. 5, а ниже приведен текст запроса на языке SQL: Рис. 5. Запрос «Загрузка палат» в режиме конструктора SELECT Палата.№, Палата.Мест, Count(Размещение.Код) AS Помещено, Count(Размещение.Переведена) AS Выписано, [Помещено]-[Выписано] AS Пациенток, [Мест]-[Пациенток] AS Свободно FROM Палата LEFT JOIN Размещение ON Палата.№ = Размещение.Палата GROUP BY Палата.№, Палата.Мест; Результаты запроса «Загрузка палат»:
Запрос «Новорожденных за период» подсчитывает общее число новорожденных, а также количество среди них мальчиков и девочек, за заданный период. Вид запроса в режиме конструктора представлен на рис. 6, а ниже приведен текст запроса на языке SQL: Рис. 6. Запрос «Новорожденных за период» в режиме конструктора SELECT Count(Ребенок.Бирка) AS Новорожденных, Sum(IIf(Ребенок!Пол="м",1,0)) AS Мальчиков, Sum(IIf(Ребенок!Пол="м",0,1)) AS Девочек FROM Ребенок WHERE (((Ребенок.ДР)>=[Forms]![Отчеты за период]![Начало] And (Ребенок.ДР)<=[Forms]![Отчеты за период]![Конец])); Результаты запроса «Новорожденных за период»:
Запрос «Пациенток за период» подсчитывает количество пациенток за период (точнее — количество пребываний в стационаре, так что если в течение заданного периода одна и та же роженица помещалась в стационар дважды, с перерывом, то она будет «подсчитана» дважды). Вид запроса в режиме конструктора представлен на рис. 7, а ниже приведен текст запроса на языке SQL: SELECT Count(Стационар.Код) AS Пациенток FROM Стационар HAVING (((Стационар.Начало)<=[Forms]![Отчеты за период]![Конец]) AND ((Стационар.Конец)>=[Forms]![Отчеты за период]![Начало] Or (Стационар.Конец) Is Null)); Рис. 7. Запрос «Пациенток за период» в режиме конструктора Результаты запроса «Пациенток за период»:
Запрос «Родов за период» вычисляет количество родов, произошедших в течение заданного периода. Вид запроса в режиме конструктора представлен на рис. 8, а ниже приведен текст запроса на языке SQL: Рис. 8. Запрос «Родов за период» в режиме конструктора SELECT Count(Роды.Код) AS Родов FROM Роды HAVING (((Роды.Начало)<=[Forms]![Отчеты за период]![Конец]) AND ((Роды.Конец)>=[Forms]![Отчеты за период]![Начало] Or (Роды.Конец) Is Null)); Результаты запроса «Родов за период»:
Запрос «Сводная статистика за период» объединяет результаты трех описанных только что запросов в одном запросе — для формирования единого отчета. Вид запроса в режиме конструктора представлен на рис. 9, а ниже приведен текст запроса на языке SQL: Рис. 9. Запрос «Сводная статистика за период» в режиме конструктора SELECT [Пациенток за период].Пациенток, [Родов за период].Родов, [Новорожденных за период].Новорожденных, [Новорожденных за период].Мальчиков, [Новорожденных за период].Девочек FROM [Пациенток за период], [Родов за период], [Новорожденных за период]; Результаты запроса «Сводная статистика за период»:
Запрос «Роды за период» отбирает данные о родах, произошедших в течение заданного периода времени, с целью формирования соответствующего отчета. Вид запроса в режиме конструктора представлен на рис. 10, а ниже приведен текст запроса на языке SQL: Рис. 10. Запрос «Роды за период» в режиме конструктора SELECT Роды.Код, Роды.Начало, Роды.Конец, CDate([Конец]-[Начало]) AS Продолжительность, Роды.Описание, Ребенок.Пол, Ребенок.ДР, Ребенок.Имя, Ребенок.Рост, Ребенок.Вес FROM Роды LEFT JOIN Ребенок ON Роды.Код = Ребенок.Код WHERE (((Роды.Начало)<=[Forms]![Отчеты за период]![Конец]) AND ((Роды.Конец)>=[Forms]![Отчеты за период]![Начало] Or (Роды.Конец) Is Null)); Результаты запроса «Роды за период»:
Запрос «Роженицы за период» отбирает данные о роженицах, пребывавших в стационаре в течение заданного периода времени. Вид запроса в режиме конструктора представлен на рис. 11, а ниже приведен текст запроса на языке SQL: SELECT Роженица.ФИО, Роженица.ДР, Стационар.Код, Стационар.Начало, Стационар.Конец, Стационар.Описание, Стационар.Врач, Размещение.Палата, Размещение.Помещена, Размещение.Переведена FROM (Роженица INNER JOIN Стационар ON Роженица.№ = Стационар.Роженица) INNER JOIN Размещение ON Стационар.Код = Размещение.Код WHERE (((Стационар.Начало)<=[Forms]![Отчеты за период]![Конец]) AND ((Стационар.Конец)>=[Forms]![Отчеты за период]![Начало] Or (Стационар.Конец) Is Null)) ORDER BY Стационар.Начало, Размещение.Помещена; Рис. 11. Запрос «Роженицы за период» в режиме конструктора Результаты запроса «Роженицы за период»:
Запрос «Список по палатам» формирует список рожениц, находящихся в настоящее время в каждой из палат. Вид запроса в режиме конструктора представлен на рис. 12, а ниже приведен текст запроса на языке SQL: SELECT Палата.№, Роженица.ФИО, Роженица.ДР, Стационар.Начало FROM (Роженица INNER JOIN Стационар ON Роженица.№ = Стационар.Роженица) INNER JOIN (Палата INNER JOIN Размещение ON Палата.№ = Размещение.Палата) ON Стационар.Код = Размещение.Код WHERE (((Стационар.Конец) Is Null)) ORDER BY Палата.№; Рис. 12. Запрос «Список по палатам» в режиме конструктора Результаты запроса «Список по палатам»:
|