Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

WHERE КФ.Nкф NOT IN



(SELECT DISTINCT ОТВ.Nкф FROM ОТВ, ДЦ

WHERE ДЦ.Цикл="ЕН" and ОТВ.Nдц=ДЦ.Nдц)

Разберем теперь задачи, в которых требуется сравнить два множества, на примере задачи 15.

Задача 15. Дать фамилии старост групп обучающихся только по типовым учебным планам.

Для понимания сути этой задачи построим для нее аналог схемы 3 для задачи 14 (стр.34)

Типы объектов и связей (стрелка показывает начало рассуждений) ДИСЦИПЛИНА ВЫБИРАЕТ СТУДЕНТ ПРЕДС-ТАВЛЯЕТ ГРУППА ВХОДИТ ПОТОК ИЗУЧАЕТ ДИСЦИПЛИНА
Первичные ключи типов объектов Nдц Nдц Кст Nгр Nпт Nдц Nдц
Ограничения на множества     Только старосты        
Условие на множества М1(Nдц)   Ì   М2(Nдц)
Схема 4. Преобразование текста задачи 15 в цепочки связей

Отличие этой схемы состоит в том, что связь УЧИТСЯ_В заменена связью ПРЕДСТАВЛЯЕТ и, если раньше М2 должно было быть подмножеством М1, то теперь условие вложения множеств должно быть обратным: М1 Ì М2. Как уже отмечалось ранее, решение задачи состоит в том, чтобы отобрать тех старост групп, для которых не существует разность двух множеств: множества дисциплин, изучаемых потоком, в котором он учится и множества дисциплин, выбранных им для изучения. Таким образом, в основной части запроса мы перебираем всех старост групп, а в условии запроса проверяем отсутствие кортежей в разности М1 – М2.

SELECT СТ.Фио

FROM СТ, ГР

WHERE СТ.Кст = ГР.Кстг

and NOT EXISTS (SELECT ВЫБ.Nдц FROM ВЫБ

WHERE ВЫБ.Кст = СТ.Кст

MINUS

SELECT ИЗЧ Nдц FROM ИЗЧ

WHERE ИЗЧ.Nпт = ГР.Nпт)

Интересно рассмотреть решение на SQL следующей задачи.

Задача 17. Номера групп, все студенты которых изучают одни и те же дисциплины.

Более понятно как решить эту задачу, если высказать ее в следующем виде: выдать номера тех групп, в которых не существует ни одного студента, для которого множество изучаемых им дисциплин, отличается от множества дисциплин, изучаемых любым другим студентом. Выберем любого студента группы (например, старосту) и будем сравнивать множество изучаемых им дисциплин с множеством дисциплин, изучаемых всеми остальными студентами этой группы на эквивалентность. Так как сравнения на эквивалентность двух множеств нет, то придется анализировать на отсутствие кортежей обе разности множеств. Как только обнаружится студент, для которого это условие не выполнено, номер этой группы нас не интересует, и все вычисления повторяются для следующей группы. На SQL это выглядит так.

SELECT ГР.Nгр

FROM ГР





Дата публикования: 2015-10-09; Прочитано: 300 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...