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

FROM Patients, Doctors, Doct_pati;

WHERE;

            year(Patients.Год_рождения) > val(ThisForm.Text1.Value) AND;

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

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

HAVING количество_больных >= 1

Результат запроса (1960):

Запрос №13

Найти фамилии врачей, лечащих пациентов в больнице

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

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

FROM Doctors, Patients, Doct_pati;

WHERE;

            Doct_pati.id_doctor = Doctors.id_doctor

Результат запроса:

Запрос №14

Найти фамилии пациентов, родившихся после заданного года рождения.

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

select *;

from Patients;

where (year(год_рождения)) > Val(ThisForm.Text1.Value)

Результат запроса (1960):

Запрос №15

Найти фамилии пациентов, лечащихся более чем у одного врача.

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

SELECT Patients.Фамилия, Patients.Имя, Patients.Отчество, Count(Doct_pati.id_patient) as "количество_врачей";

FROM Patients, Doctors, Doct_pati, Detachment;

WHERE;

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

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

GROUP BY Doct_pati.id_patient;

HAVING количество_врачей > 1

Результат запроса:

Запрос №16

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

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

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

FROM Patients, Doctors, Doct_pati;

WHERE;

            year(Patients.Год_рождения) < val(ThisForm.Text1.Value) AND;

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

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

HAVING количество_больных >= 1

Результат запроса (1960):

Запрос №17

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

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

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

FROM Doctors, Patients, Doct_pati;

WHERE;

            Doctors.Фамилия not in (;

SELECT 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);

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

Запрос №18

Для заданного (выбор) врача найти пациентов, которым назначено заданное (выбор) лекарство заданной (выбор) фирмы.

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

SELECT Patients.Фамилия, Patients.Имя, Patients.Отчество, Patients.Год_рождения, Patients.Диагноз, Detachment.название as Отделение, Patients.Палата, Patients.Койка;

FROM Drugs, Patients, Companies, Detachment, Drug_Comp, Pati_Drug, Doctors, Doct_pati;

WHERE;

            Drug_Comp.id_company = Companies.id_company AND Companies.название = ThisForm.Combo2.Value AND;

            Drug_Comp.id_drug = drugs.id_drug AND drugs.название = ThisForm.Combo3.Value AND;

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

            Pati_Drug.id_drug = Drugs.id_drug AND Doctors.id_doctor = Doct_pati.id_doctor AND Doctors.Фамилия = ThisForm.Combo1.Value AND;

            Doct_pati.id_patient = Patients.id_patient

Результат запроса (Глазычева, Фармаком, Бензилпенициллиновая натриевая соль):

Формы редактирования данных

Все формы для облегчения создания БД сконструируем в мастере

Выводы:

В процессе проектирования РГР были получены и закреплены знания по SQL-запросам, а также многотабличном связывании. Была сделана удачная попытка в проектировании структуры БД и созданы формы для облегчения ввода/редактирования данных пользователем.