Формирование нескольких баз данных “Лекарства”, “Фирмы” , “Пациенты”, страница 6

FROM Patients, Pati_Drug, Drugs, Detachment;

WHERE;

            Pati_Drug.id_drug = Drugs.id_drug AND Drugs.название = ThisForm.Combo1.Value AND;

            Pati_Drug.id_patient = Patients.id_patient AND Detachment.id_detach = Patients.Отделение;

Результат запроса (Бензилпенициллина натриевая соль):

Запрос №8

Найти фамилии врачей, имеющих в заданной (выбор) палате, заданного (выбор) отделения.

Текст запроса:

SELECT Doctors.Фамилия, Doctors.Имя, Doctors.Отчество, Doctors.Телефон, Count(Doctors.Фамилия) as "количество_больных";

FROM Patients, Doctors, Doct_pati, Detachment;

WHERE;

            Patients.Отделение = Detachment.id_detach AND Detachment.название = ThisForm.Combo1.Value AND;

            Doct_pati.id_patient = Patients.id_patient AND Doct_pati.id_doctor = Doctors.id_doctor AND;

            Patients.Палата = VAL(ThisForm.Combo2.Value);

GROUP BY Doctors.Фамилия

Результат запроса (кардиология, 101):

Запрос №9

Найти фамилии врачей, имеющих более 5 пациентов в палатах заданного (выбор) отделения.

Текст запроса:

SELECT Count(Doctors.Фамилия) as "количество", Doctors.Фамилия, Doctors.Имя, Doctors.Отчество, Doctors.Телефон;

FROM Patients, Doctors, Doct_pati, Detachment;

WHERE;

            Patients.Отделение = Detachment.id_detach AND Detachment.название = ThisForm.Combo1.Value AND;

            Doct_pati.id_patient = Patients.id_patient AND Doct_pati.id_doctor = Doctors.id_doctor;

GROUP BY Doctors.Фамилия;

HAVING количество > 5

Результат запроса (инфекционное):

Запрос №10

Найти фамилии врачей, имеющих по крайней мере одного пациента в каждой из палат заданного (выбор) отделения.

Текст запроса:

select distinct Patients.Палата;

from Patients, Detachment;

where Detachment.название = ThisForm.Combo1.Value and Detachment.id_detach = Patients.Отделение;

into cursor cur_palata

select *;

from Doctors;

into cursor cur_doct

select count(cur_palata.Палата) as "Количество";

from cur_palata;

into cursor cur_palcount

do while !eof('cur_doct')

            x = 0

            do while !eof('cur_palata')

                        select count(Patients.Фамилия) as "Количество";

                        from Patients, Detachment, Doctors, Doct_pati;

                        where Patients.Палата = cur_palata.Палата and Detachment.название = ThisForm.Combo1.Value and;

                                    Detachment.id_detach = Patients.Отделение and Doctors.Фамилия = cur_doct.Фамилия and;

                                    Doct_pati.id_doctor = Doctors.id_doctor and Doct_pati.id_patient = Patients.id_patient;

                        into cursor cur_count

                        if cur_count.Количество >= 1

                                    x = x + 1

                        endi

                        skip 1 in 'cur_palata'

            enddo

            if x == cur_palcount.Количество

                        messagebox(cur_doct.Фамилия)

            endi

            goto 1 in 'cur_palata'

            skip 1 in 'cur_doct'

enddo

Результат запроса (Кардиология):

Запрос №11

Найти фамилии врачей, лечащих пациента по заданной (выбор) фамилии

Текст запроса:

SELECT Doctors.Фамилия, Doctors.Имя, Doctors.Отчество, Doctors.Телефон;

FROM Doctors, Patients, Doct_pati;

WHERE;

            Patients.Фамилия = ThisForm.Combo1.Value AND Patients.id_patient = Doct_pati.id_patient AND;

            Doct_pati.id_doctor = Doctors.id_doctor

Результат запроса (Сергеев):

Запрос №12

Найти фамилии врачей, лечащих по крайней мере одного пациента, родившегося после заданного года рождения (ввод с клавиатуры произвольного года рождения).

Текст запроса:

SELECT Doctors.Фамилия, Doctors.Имя, Doctors.Отчество, Doctors.Телефон, Count(Doctors.Фамилия) as "количество_больных";