Загрузка данных


——————————

Шаг 2. Настройка связей (Схема данных)

Откройте вкладку Работа с базами данных -> Схема данных. Добавьте все три таблицы и соедините их:

1. Перетащите поле ID_Пациента из таблицы Пациенты на поле ID_Пациента в таблице Лечение. Поставьте галочку «Обеспечение целостности данных». Связь: один-ко-многим.

2. Перетащите поле ID_Врача из таблицы Врачи на поле ID_Врача в таблице Лечение. Поставьте галочку «Обеспечение целостности данных». Связь: один-ко-многим.

——————————

Шаг 3. Создание SQL-запросов (Выборки)

Чтобы создать запрос, перейдите в Создание -> Конструктор запросов, закройте окно добавления таблиц, нажмите кнопку SQL в левом верхнем углу и вставьте соответствующий код.

Запрос 1: Случаи, когда заболевание «язва желудка» лечилось невропатологом

SELECT Пациенты.Фамилия, Пациенты.Имя, Врачи.ФИО_Врача, Лечение.Диагноз, Врачи.Специализация
FROM (Пациенты INNER JOIN Лечение ON Пациенты.ID_Пациента = Лечение.ID_Пациента) 
INNER JOIN Врачи ON Врачи.ID_Врача = Лечение.ID_Врача
WHERE Лечение.Диагноз = "язва желудка" AND Врачи.Специализация = "невропатолог";

Запрос 2: Имена врачей, которые работают исключительно с пенсионерами

Запрос выбирает врачей, у которых есть пациенты, но при этом среди их пациентов нет никого со статусом, отличным от «пенсионер».

SELECT Врачи.ФИО_Врача
FROM Врачи
WHERE Врачи.ID_Врача IN (SELECT ID_Врача FROM Лечение) 
  AND Врачи.ID_Врача NOT IN (
    SELECT Лечение.ID_Врача
    FROM Лечение INNER JOIN Пациенты ON Лечение.ID_Пациента = Пациенты.ID_Пациента
    WHERE Пациенты.Социальный_Статус <> "пенсионер"
  );

Запрос 3: Процент смертности от заболевания «цирроз печени»

Используется условное суммирование с помощью функции IIf для вычисления процента.

SELECT 
  (Sum(IIf(Лечение.Текущее_Состояние = "умер", 1, 0)) / Count(*)) * 100 AS [Процент смертности, %]
FROM Лечение
WHERE Лечение.Диагноз = "цирроз печени";

Запрос 4: Пациенты, которые болеют (болели) всеми болезнями

В MS Access нет поддержки конструкции COUNT(DISTINCT), поэтому для выявления пациентов, у которых количество уникальных диагнозов совпадает с общим количеством уникальных диагнозов в клинике, применяется вложенный группирующий запрос:

SELECT Пациенты.Фамилия, Пациенты.Имя
FROM Пациенты
WHERE Пациенты.ID_Пациента IN (
  SELECT ID_Пациента
  FROM (SELECT DISTINCT ID_Пациента, Диагноз FROM Лечение) AS UniquePatientDiagnoses
  GROUP BY ID_Пациента
  HAVING Count(Диагноз) = (SELECT Count(*) FROM (SELECT DISTINCT Диагноз FROM Лечение) AS TotalUniqueDiagnoses)
);

-----
0.840044 ₽ · /balance_help