Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Роддом.doc
Скачиваний:
115
Добавлен:
01.05.2014
Размер:
878.08 Кб
Скачать

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 г.):

Загрузка врачей за период

Врач

Пациенток

Гайдукевич Инна Федоровна

2

Дзюбенко Ирина Федоровна

1

Терентьев Михаил Иванович

2

Запрос «Загрузка палат» подсчитывает для каждой палаты количество размещенных в ней пациенток. Для этого в запросе подсчитывается общее число помещавшихся в палату пациенток (непустых значений поля Код), общее число выписанных пациенток (непустых значений поля Переведена), и на основании этих данных — количество пациенток, находящихся в палате на текущий момент. Вид запроса в режиме конструктора представлен на рис. 5, а ниже приведен текст запроса на языке SQL:

Рис. 5. Запрос «Загрузка палат» в режиме конструктора

SELECT Палата.№, Палата.Мест, Count(Размещение.Код) AS Помещено, Count(Размещение.Переведена) AS Выписано, [Помещено]-[Выписано] AS Пациенток, [Мест]-[Пациенток] AS Свободно

FROM Палата LEFT JOIN Размещение ON Палата.№ = Размещение.Палата

GROUP BY Палата.№, Палата.Мест;

Результаты запроса «Загрузка палат»:

Загрузка палат

Палата №

Мест

Помещено

Свободно

Выписано

Пациенток

201

2

2

0

0

2

202

2

1

2

1

0

203

3

1

2

0

1

204

3

1

2

0

1

205

2

1

1

0

1

206

2

3

0

1

2

207

1

1

0

0

1

208

1

0

1

0

0

209

1

0

1

0

0

210

1

1

1

1

0

301

2

1

1

0

1

302

2

1

1

0

1

303

2

1

1

0

1

304

2

0

2

0

0

305

2

0

2

0

0

306

2

2

1

1

1

307

1

1

1

1

0

308

1

0

1

0

0

Запрос «Новорожденных за период» подсчитывает общее число новорожденных, а также количество среди них мальчиков и девочек, за заданный период. Вид запроса в режиме конструктора представлен на рис. 6, а ниже приведен текст запроса на языке SQL:

Рис. 6. Запрос «Новорожденных за период» в режиме конструктора

SELECT Count(Ребенок.Бирка) AS Новорожденных, Sum(IIf(Ребенок!Пол="м",1,0)) AS Мальчиков, Sum(IIf(Ребенок!Пол="м",0,1)) AS Девочек

FROM Ребенок

WHERE (((Ребенок.ДР)>=[Forms]![Отчеты за период]![Начало] And (Ребенок.ДР)<=[Forms]![Отчеты за период]![Конец]));

Результаты запроса «Новорожденных за период»:

Новорожденных за период

Новорожденных

Мальчиков

Девочек

1

1

0

Запрос «Пациенток за период» подсчитывает количество пациенток за период (точнее — количество пребываний в стационаре, так что если в течение заданного периода одна и та же роженица помещалась в стационар дважды, с перерывом, то она будет «подсчитана» дважды). Вид запроса в режиме конструктора представлен на рис. 7, а ниже приведен текст запроса на языке SQL:

SELECT Count(Стационар.Код) AS Пациенток

FROM Стационар

HAVING (((Стационар.Начало)<=[Forms]![Отчеты за период]![Конец]) AND ((Стационар.Конец)>=[Forms]![Отчеты за период]![Начало] Or (Стационар.Конец) Is Null));

Рис. 7. Запрос «Пациенток за период» в режиме конструктора

Результаты запроса «Пациенток за период»:

Пациенток за период

Пациенток

5

Запрос «Родов за период» вычисляет количество родов, произошедших в течение заданного периода. Вид запроса в режиме конструктора представлен на рис. 8, а ниже приведен текст запроса на языке SQL:

Рис. 8. Запрос «Родов за период» в режиме конструктора

SELECT Count(Роды.Код) AS Родов

FROM Роды

HAVING (((Роды.Начало)<=[Forms]![Отчеты за период]![Конец]) AND ((Роды.Конец)>=[Forms]![Отчеты за период]![Начало] Or (Роды.Конец) Is Null));

Результаты запроса «Родов за период»:

Родов за период

Родов

2

Запрос «Сводная статистика за период» объединяет результаты трех описанных только что запросов в одном запросе — для формирования единого отчета. Вид запроса в режиме конструктора представлен на рис. 9, а ниже приведен текст запроса на языке SQL:

Рис. 9. Запрос «Сводная статистика за период» в режиме конструктора

SELECT [Пациенток за период].Пациенток, [Родов за период].Родов, [Новорожденных за период].Новорожденных, [Новорожденных за период].Мальчиков, [Новорожденных за период].Девочек

FROM [Пациенток за период], [Родов за период], [Новорожденных за период];

Результаты запроса «Сводная статистика за период»:

Сводная статистика за период

Пациенток

Родов

Новорожденных

Мальчиков

Девочек

5

2

1

1

0

Запрос «Роды за период» отбирает данные о родах, произошедших в течение заданного периода времени, с целью формирования соответствующего отчета. Вид запроса в режиме конструктора представлен на рис. 10, а ниже приведен текст запроса на языке SQL:

Рис. 10. Запрос «Роды за период» в режиме конструктора

SELECT Роды.Код, Роды.Начало, Роды.Конец, CDate([Конец]-[Начало]) AS Продолжительность, Роды.Описание, Ребенок.Пол, Ребенок.ДР, Ребенок.Имя, Ребенок.Рост, Ребенок.Вес

FROM Роды LEFT JOIN Ребенок ON Роды.Код = Ребенок.Код

WHERE (((Роды.Начало)<=[Forms]![Отчеты за период]![Конец]) AND ((Роды.Конец)>=[Forms]![Отчеты за период]![Начало] Or (Роды.Конец) Is Null));

Результаты запроса «Роды за период»:

Роды за период

Код

Начало

Конец

Продолжительность

Описание

Пол

Дата и время рождения

Имя

Рост

Вес

Стасюк Елена Павловна

25.02.07 7:20:00

25.02.07 8:50:00

1:30:00

м

25.02.07 8:30:00

Стасюк Даниил Максимович

54

3,2

Кучерявенко Марина Сергеевна

20.02.07 12:00:00

20.02.07 13:00:00

1:00:00

в результате позднего обращения плод спасти не удалось

Запрос «Роженицы за период» отбирает данные о роженицах, пребывавших в стационаре в течение заданного периода времени. Вид запроса в режиме конструктора представлен на рис. 11, а ниже приведен текст запроса на языке SQL:

SELECT Роженица.ФИО, Роженица.ДР, Стационар.Код, Стационар.Начало, Стационар.Конец, Стационар.Описание, Стационар.Врач, Размещение.Палата, Размещение.Помещена, Размещение.Переведена

FROM (Роженица INNER JOIN Стационар ON Роженица.№ = Стационар.Роженица) INNER JOIN Размещение ON Стационар.Код = Размещение.Код

WHERE (((Стационар.Начало)<=[Forms]![Отчеты за период]![Конец]) AND ((Стационар.Конец)>=[Forms]![Отчеты за период]![Начало] Or (Стационар.Конец) Is Null))

ORDER BY Стационар.Начало, Размещение.Помещена;

Рис. 11. Запрос «Роженицы за период» в режиме конструктора

Результаты запроса «Роженицы за период»:

Роженицы за период

Ф.И.О.

Дата рожд.

Код

Начало

Конец

Описание

Врач

Палата

Помещена

Переведена

Алексенко Анна Владимировна

08.02.85

6

03.02.07

20.02.07

помещена с стационар на сохранение

Гайдукевич Инна Федоровна

210

03.02.07

12.02.07

Алексенко Анна Владимировна

08.02.85

6

03.02.07

20.02.07

помещена с стационар на сохранение

Гайдукевич Инна Федоровна

307

12.02.07

20.02.07

Кучерявенко Марина Сергеевна

01.09.89

8

20.02.07 11:50:00

25.02.07

поступила после того, как отошли воды, сразу помещена в родовое отделение

Терентьев Михаил Иванович

306

20.02.07 15:00:00

25.02.07

Стасюк Елена Павловна

12.03.85

7

21.02.07 14:30:00

06.03.07

Дзюбенко Ирина Федоровна

206

21.02.07 14:50:00

06.03.07

Лебедкина Ирина Михайловна

30.01.89

2

24.02.07 12:20:00

Гайдукевич Инна Федоровна

204

24.02.07 13:00:00

Иваненко Людмила Петровна

27.12.82

9

27.02.07 14:30:00

Терентьев Михаил Иванович

301

27.02.07 14:55:00

Запрос «Список по палатам» формирует список рожениц, находящихся в настоящее время в каждой из палат. Вид запроса в режиме конструктора представлен на рис. 12, а ниже приведен текст запроса на языке SQL:

SELECT Палата.№, Роженица.ФИО, Роженица.ДР, Стационар.Начало

FROM (Роженица INNER JOIN Стационар ON Роженица.№ = Стационар.Роженица) INNER JOIN (Палата INNER JOIN Размещение ON Палата.№ = Размещение.Палата) ON Стационар.Код = Размещение.Код

WHERE (((Стационар.Конец) Is Null))

ORDER BY Палата.№;

Рис. 12. Запрос «Список по палатам» в режиме конструктора

Результаты запроса «Список по палатам»:

Список по палатам

Палата №

Ф.И.О.

Дата рожд.

Начало

201

Пасс Алина Альбертовна

10.05.82

04.03.07

201

Гудзь Наталья Олеговна

11.01.80

03.03.07 13:25:00

203

Кононенко Анжела Петровна

21.11.87

01.03.07 12:35:00

204

Лебедкина Ирина Михайловна

30.01.89

24.02.07 12:20:00

205

Бубнова Анастасия Михайловна

27.09.83

28.02.07 14:25:00

206

Вербицкая Елена Ивановна

21.12.85

01.03.07 10:45:00

206

Кохан Виктория Петровна

23.08.80

05.03.07 12:35:00

207

Михайлова Инна Николаевна

24.06.81

04.03.07 15:50:00

301

Иваненко Людмила Петровна

27.12.82

27.02.07 14:30:00

302

Пушкова Анна Ивановна

28.10.83

02.03.07 13:20:00

303

Кутько Ирина Геннадиевна

14.02.82

02.03.07 14:40:00

306

Самойленко Анна Николаевна

31.05.88

05.03.07 12:20:00

Соседние файлы в предмете Базы данных