МОСКОВСКИЙ ЭНЕРГЕТИЧЕСКИЙ ИНСТИТУТ (ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)
ИНСТИТУТ АВТОМАТИКИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ
КАФЕДРА ПРИКЛАДНОЙ МАТЕМАТИКИ
Лабораторная работа № 3.
Операции соединения нескольких таблиц бд при выполнении сложных списковых запросов.
Выполнили
студенты группы А-13-08
каф. Прикладной Математики
Буренков Сергей
Захаров Антон
Москва, 2011
Задание 1
Выдать список студентов и аспирантов вашего государства и с фамилиями, начинающимися на букву М. Отчёт должен включать все поля, кроме полей НОМЕР и СЕМ_ПОЛОЖЕНИЕ. Поля КАТ_ОБУЧЕНИЯ_К и ВУЗ_К должны быть раскодированы. Данные отсортировать по категориям обучения и учебным заведениям.
Запрос:
SELECT
fio AS 'Фамилия Имя Отчество',
data_rogden AS 'Дата рождения',
pol AS 'Пол',
spec AS 'Специальность',
kat_obucheniya AS 'Категория обучения',
uch_zavedenie AS 'Учебное заведение',
mp AS 'Месяц приёма',
gp AS 'Год приёма',
mo AS 'Месяц окончания',
gok AS 'Год окончания'
FROM arm
JOIN kat_obuch ON kat_obuch.cod = kat_obuch_k
JOIN vuz ON vuz.cod = vuz_k
WHERE kat_obuch_k IN('03', '07') AND fio LIKE 'М%'
ORDER BY kat_obuch_k, uch_zavedenie
Результат:
Задание 2
Выдать список выпускников 95 и 96 г.г. вашего государства по всем годам рождения, кроме 1963. Отчёт должен включать все поля, кроме полей НОМЕР и СЕМ_ПОЛОЖЕНИЕ. Поля КАТ_ОБУЧЕНИЯ_К и ВУЗ_К должны быть раскодированы. Данные отсортировать по годам окончания и учебным заведениям.
Запрос:
SELECT
fio AS 'Фамилия Имя Отчество',
data_rogden AS 'Дата рождения',
pol AS 'Пол',
spec AS 'Специальность',
kat_obucheniya AS 'Категория обучения',
uch_zavedenie AS 'Учебное заведение',
mp AS 'Месяц приёма',
gp AS 'Год приёма',
mo AS 'Месяц окончания',
gok AS 'Год окончания'
FROM arm
JOIN kat_obuch ON kat_obuch.cod = kat_obuch_k
JOIN vuz ON vuz.cod = vuz_k
WHERE gok IN('95', '96') AND data_rogden NOT LIKE '%63'
ORDER BY gok, uch_zavedenie
Результат:
Задание 3
Выдать список учащихся вашего государства, принятых на учёбу в 1990 году и по всем специальностям, кроме 0101 и 0301. Отчёт должен включать все поля, кроме МЕСЯЦ_ПРИЕМА, ГОД_ПРИЕМА, НОМЕР. Поля СЕМ_ПОЛОЖЕНИЕ_К, КАТ_ОБУЧЕНИЯ_К и ВУЗ_К должны быть раскодированы. Данные отсортировать по учебным заведениям и специальностям.
Запрос:
SELECT
fio AS 'Фамилия Имя Отчество',
data_rogden AS 'Дата рождения',
pol AS 'Пол',
family_status AS 'Семейное положение',
spec AS 'Специальность',
kat_obucheniya AS 'Категория обучения',
uch_zavedenie AS 'Учебное заведение',
mo AS 'Месяц окончания',
gok AS 'Год окончания'
FROM arm
JOIN family ON family.cod = sem_polog_k
JOIN kat_obuch ON kat_obuch.cod = kat_obuch_k
JOIN vuz ON vuz.cod = vuz_k
WHERE gp = '90' AND NOT spec IN('000101', '000301')
ORDER BY uch_zavedenie, spec
Результат:
Задание 4
Выдать список учащихся вашего государства только женского пола и с именами, не заканчивающимися на букву А. Отчёт должен включать все поля, кроме полей НОМЕР и ПОЛ. Поля СЕМ_ПОЛОЖЕНИЕ_К, ВУЗ_К и КАТ_ОБУЧЕНИЯ_К должны быть раскодированы. Данные отсортировать по специальностям.
Запрос:
SELECT
fio AS 'Фамилия Имя Отчество',
data_rogden AS 'Дата рождения',
family_status AS 'Семейное положение',
spec AS 'Специальность',
kat_obucheniya AS 'Категория обучения',
uch_zavedenie AS 'Учебное заведение',
mp AS 'Месяц приёма',
gp AS 'Год приёма',
mo AS 'Месяц окончания',
gok AS 'Год окончания'
FROM arm
JOIN family ON family.cod = sem_polog_k
JOIN kat_obuch ON kat_obuch.cod = kat_obuch_k
JOIN vuz ON vuz.cod = vuz_k
WHERE pol = 'Ж' AND
NOT (
(fio LIKE '% %А %' AND fio NOT LIKE '% % %А' AND fio NOT LIKE '% % %А %') OR
fio LIKE '% %А %А' OR
fio LIKE '% %А %А %'
)
ORDER BY spec
Результат: