Контрольная работа: База данных
А) Получить список всех общеобразовательных дисциплин в учебном плане заданной специальности.
SELECT [discipl].[nazvanie]
FROM (discipl INNER JOIN discipl_type ON [discipl].[id_discipl_type]=[discipl_type].[Код]) INNER JOIN (spec INNER JOIN plan ON [spec].[Код]=[plan].[id_spec]) ON [discipl].[Код]=[plan].[id_discipl]
WHERE [spec].[nazvanie]=[?] And [discipl_type].[nazvanie]='Общеобразовательные';
При исполнении данного запроса в среде MSAccess будет запрошено название специальности (параметр ? ), в результате будет получен список общеобразовательных предметов в учебном плане данной специальности. Результат запроса для специальности «Автоматизация техпроцессов и производств» представлен ниже:
Б) Получить список специальностей, для которых преподается заданный предмет.
SELECT spec.nazvanie
FROM discipl INNER JOIN (spec INNER JOIN plan ON spec.Код = plan.id_spec) ON discipl.Код = plan.id_discipl
WHERE (discipl.nazvanie)=[?];
При исполнении данного запроса в среде MSAccess будет запрошено название предмета (параметр ? ), в результате будет получен список специальностей, для которых преподается заданный предмет. Результат запроса для предмета «Философия» представлен ниже:
В) Получить список преподавателей и недельной зарплаты каждого.
SELECT prepod.name, sum(plan.number_of_hours_at_week*doljnost.oplata_za_chas) AS oplata_za_week
FROM doljnost INNER JOIN (prepod INNER JOIN plan ON prepod.Код = plan.id_prepod) ON doljnost.Код = prepod.id_doljnost
GROUP BY prepod.name;
Результат запроса представлен ниже:
Г) Получить преподавателя с максимальной недельной зарплатой.
SELECT TOP 1 [prepod].[name], sum([plan].[number_of_hours_at_week]*[doljnost].[oplata_za_chas]) AS oplata_za_week
FROM doljnost INNER JOIN (prepod INNER JOIN plan ON [prepod].[Код]=[plan].[id_prepod]) ON [doljnost].[Код]=[prepod].[id_doljnost]
GROUP BY [prepod].[name]
ORDER BY sum([plan].[number_of_hours_at_week]*[doljnost].[oplata_za_chas]) DESC;
Результат запроса представлен ниже:
Д) Получить учебный план заданной специальности: дисциплина, вид дисциплины, часов в неделю.
SELECT [discipl].[nazvanie], [discipl_type].[nazvanie], [plan].[number_of_hours_at_week]
FROM spec INNER JOIN ((discipl_type INNER JOIN discipl ON [discipl_type].[Код]=[discipl].[id_discipl_type]) INNER JOIN plan ON [discipl].[Код]=[plan].[id_discipl]) ON [spec].[Код]=[plan].[id_spec]
WHERE [spec].[nazvanie]=[?];