Базы данных - модели, разработка, реализация



         

Операторы манипулирования данными - часть 6


При отсутствии троек на сданных экзаменах назначим обычную стипендию с надбавкой 0%. Однако

99

все эти изменения мы должны будем сделать отдельными операциями обновления.

Назначение повышенной стипендии:

  • UPDATE R5
  • SET R5.Стипендия = 50%
  • WHERE R5.ФИО IN
  • (SELECT R1.ФИО
  • FROM R1
  • WHERE R1.Оценка = 5
  • GROOP BY R1.ФИО
  • HAVING COUNT(*) =3 )
  • Назначение стипендии с надбавкой 25%:

  • UPDATE R5
  • SET R5.Стипендия = 25%
  • WHERE R5.ФИО IN
  • (SELECT R1.ФИО
  • FROM R1
  • WHERE R1.ФИО NOT IN
  • (SELECT А.ФИО
  • FROM R1 A
  • WHERE А.Оценка
  • GROOP BY R1.ФИО
  • HAVING COUNT(*)>=2 )
  • Назначение обычной стипендии:

  • UPDATE R5
  • SET R5.Стипендия = О%
  • WHERE R5.ФИО IN
  • (SELECT R1.ФИО
  • FROM R1
  • WHERE R1.Оценка >=4 AND R1.ФИО NOT IN
  • (SELECT А.ФИО
  • FROM R1 A
  • WHERE А.Оценка
  • Снятие стипендии:

  • UPDATE R5
  • SET R5.Стипендия = -100%
  • WHERE R5.ФИО IN
  • 100

  • (SELECT R1.ФИО
  • FROM R1
  • WHERE R1.Оценка
  • Почему мы в первом запросе на обновление не использовали дополнительную проверку на отсутствие двоек, троек и несданных экзаменов, как мы сделали это при назначении следующих видов стипендии? Просто мы учли особенности нашей предметной области: у нас в соответствии с исходными данными не только 3 экзамена. Но если мы можем предположить, что число экзаменов может быть произвольным и изменяться от семестра к семестру, то нам надо изменить наш запрос. Запрос - это некоторый алгоритм решения конкретной задачи, которую мы формулируем заранее на естественном языке. И оттого, что наша задача решается всего одним оператором языка SQL, она не становится примитивной. Мощность языка SQL и состоит в том, что он позволяет одним предложением сформулировать ответы на достаточно сложные запросы, для реализации которых на традиционных языках понадобилось бы писать большую программу. Итак, подумаем, как нам надо изменить текст нашего запроса на обновление для назначения повышенной стипендии при любом количестве сданных экзаменов. Прежде всего, каждая группа может иметь свое число экзаменов в сессию, это зависит от специальности и учебного плана, по которому учится данная группа.


    Содержание  Назад  Вперед