Moss Bitch
Мастер
(1733)
8 лет назад
Гугл в помощь! Ищи статьи объясняющие и разжевывающие материал, таких полно, подберёшь для себя.)
Александр НиколаевПрофи (607)
8 лет назад
3.Получить номера предметов, изучаемых группой АС-8.
Выборка: Номера WHERE Предметы = ЭВМ и С
Проекция: Группы [Кодовый номер предмета, Название предмета]
КодовыйНомерПредметаНазваниеПредмета
17П СУБД ПК
18П ВКСС
Запросы выполняются следующим образом (по выборке), а я даже не знаю правильно ли у меня или нет.
Алексей Кузьминов
Мудрец
(11132)
8 лет назад
Запросы пишутся постепенно.
На примере 2:
Сначала получим номера преподавателей, которые на кафедре АСУ
select п. ЛичныйНомер from Преподы п where п. Кафедра='АСУ'
Гарантированно повторений нет.
Чтобы узнать специальность группы, нужно знать номера групп, которые учат эти преподы, поэтому
select р. КодовыйНомерГруппы from Расписание р, Преподы п
where p.ЛичныйНомер=п. ЛичныйНомер and п. Кафедра='АСУ'
Тут номера групп могут повторяться, если для одной группы предметы ведут разные преподаватели кафедры АСУ
Ну и собственно специальности
select г. Специальность from Группы г, Расписание р, Преподы п where
г. КодовыйНомерГруппы=р. КодовыйНомерГруппы and p.ЛичныйНомер=п. ЛичныйНомер and п. Кафедра='АСУ'
В таком запросе специальности будут повторяться, поэтому придётся использовать distinct:
select distinct г. Специальность from …
ЗЫ
По правилам реляционной алгебры нужно было бы писать через join'ы, но так выглядит проще.
1.Получить номера преподавателей с кафедры ЭВМ, преподающих предметы по специальности, совпадающей со специальностью студенческой группы.
2.Получить специальности студенческой группы, на которых работают преподаватели кафедры АСУ.
3.Получить номера предметов, изучаемых группой АС-8.
4.Получить номера студенческих групп, которые изучают те же предметы, что и студенческая группа АС-8.
5.Получить номера студенческих групп, которые не изучают предметы, преподаваемых в студенческой группе АС-8.