Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Запросы.docx
Скачиваний:
2
Добавлен:
20.11.2018
Размер:
1.67 Mб
Скачать

6.6.5. Запрос на удаление записей

Из всех запросов на изменение запрос на удаление наиболее опасен, он удаляет записи раз и навсегда. Подобно другим запросам на изменение, запрос на удаление работает с группами записей на основании отбора записей.

Запрос на удаление может одновременно удалять записи из нескольких таблиц. Однако для удаления связанных записей из нескольких таблиц необходимо выполнить следующие действия:

  • Определить отношения между таблицами в окне Схема данных (Relationships).

  • Установить опцию Обеспечение целостности данных (Enforce Referenrial Integrity) для межтабличной связи.

  • Установить опцию каскадное удаление связных записей (Cascade Delete Related Records) для межтабличной связи.

Для создания запроса на каскадное удаление данных о визитах пациентов, посещавших врачей ранее 1990 года, выполните перечисленные ниже действия:

  1. Создайте новый запрос и включите в него только таблицу VisitTab.

  2. Выберите запрос на удаление с верхней панели.

  3. Добавьте в бланк запроса поле Data из таблицы VisitTab. В строке Удаления (Delete) этого поля отобразится значение Условие (Where).

  4. В строке Условия отбора (Criteria) столбца Data введите: <#01.01.1990#.

  5. Выберите в таблице VisitTab поле с символом звездочки и перетащите его в бланк запроса. В строке Удаление столбца VisitTab* отобразится значение Из (From).

  6. Перейдите в режим таблицы и убедитесь, что присутствуют только необходимые записи.

  7. Вернитесь в режим Конструктора.

  8. Щелкните на кнопке Запуск (Run) панели инструментов. На экране отобразится диалоговое окно, запрашивающее подтверждение на удаление записей. Щелкните на кнопке Да (Yes) для удаления записей из таблицы.

6.7. Примеры запросов на sql

Для обобщения рассмотренного материала данной главы далее приведены примеры записи операторов SQL, эквивалентных запросам к БД (рис. 29) "Лечебное учреждение".

Запрос 1. Визиты к специалистам больных, не относящихся к группе риска.

Оператор SQL:

SELECT Врачи.SpecDc, Пациенты.FullNamePt, Пациенты.Пол, Пациенты.GroupRiskPt

FROM Пациенты INNER JOIN (Врачи INNER JOIN Визиты ON Врачи.ID_doc = Визиты.ID_doc) ON Пациенты.ID_pat = Визиты.ID_pat

WHERE (((Пациенты.GroupRiskPt)="Нет"));

Рис. 29 . Структура БД "Лечебное учреждение"

Результат выполнения запроса (рис. 30):

Рис. 30. Вывод результата запроса 1 в режиме BROWSE

Запрос 2. Визиты к специалистам пациентов-мужчин с группой риска.

Оператор SQL:

SELECT Врачи.SpecDc, Пациенты.FullNamePt, Пациенты.Пол, Пациенты.GroupRiskPt

FROM Пациенты

INNER JOIN (Врачи INNER JOIN Визиты ON Врачи.ID_doc = Визиты.ID_doc) ON Пациенты.ID_pat = Визиты.ID_pat

WHERE (((Пациенты.Пол)="М") AND ((Пациенты.GroupRiskPt)<>"Нет"));

Результат выполнения запроса (рис. 31):

Рис. 31. Вывод результата запроса 2 в режиме BROWSE

Запрос 3. Посещения специалистов за период с 1.3.2005. по 1.7.2005.

Оператор SQL:

SELECT Врачи.SpecDc, Пациенты.FullNamePt AS Пациент, Пациенты.Пол, Пациенты.GroupRiskPt, Визиты.DataVisit

FROM Пациенты INNER JOIN (Врачи INNER JOIN Визиты ON Врачи.ID_doc = Визиты.ID_doc) ON Пациенты.ID_pat = Визиты.ID_pat

WHERE (((Визиты.DataVisit) Between #3/1/2005# And #7/1/2005#));

Результат выполнения запроса (рис. 32):

Рис. 32. Вывод результата запроса 3 в режиме BROWSE

Запрос 4. Посещения врачей со стажем работы от 15 до 20 лет.

Оператор SQL:

SELECT Врачи.SpecDc, Пациенты.FullNamePt AS Пациент, Врачи.Exper, Визиты.DataVisit

FROM Пациенты INNER JOIN (Врачи INNER JOIN Визиты ON Врачи.ID_doc = Визиты.ID_doc) ON Пациенты.ID_pat = Визиты.ID_pat

WHERE (((Врачи.Exper) Between 15 And 20));

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

Рис. 33. Вывод результата запроса 4 в режиме BROWSE

Запрос 5. Суммарная зарплата врачей - специалистов.

Оператор SQL:

SELECT Врачи.SpecDc, Sum(Врачи.Salary) AS [Sum-Salary]

FROM Пациенты INNER JOIN (Врачи INNER JOIN Визиты ON Врачи.ID_doc = Визиты.ID_doc) ON Пациенты.ID_pat = Визиты.ID_pat

GROUP BY Врачи.SpecDc

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

Рис. 34. Вывод результата запроса 5 в режиме BROWSE

Запрос 6. Врачи терапевты.

Оператор SQL:

SELECT Врачи.FullNameDc, Врачи.SpecDc, Врачи.Exper, Врачи.Salary

FROM Врачи

WHERE (((Врачи.SpecDc)="Терапевт"));

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

Рис. 35. Вывод результата запроса 8 в режиме BROWSE

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]