Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD / Labs / Russian / Lab6R-EmbededQueries.doc
Скачиваний:
25
Добавлен:
20.02.2016
Размер:
199.17 Кб
Скачать
    1. Подзапросы во фразе select

Во фравзе SELECT можно использовать простые (независимые, несвязанные) и связанные (коррелированные) запросы. В обоих случаях подзапрос должен возвращать одно значение.

Подзапрос является простым, если в нем не используются атрибуты таблиц, определенных в основном (внешнем запросе). При использовании простого подзапроса он вычисляется однократно и возвращенное им значение вставляется в соответствующее место во все строки, формируемые внешним запросом.

Пример. Для каждого факультета вывести его название, фонд финансирование, а также максимальный и минимальный фонды финансирования среди всех кафедрВУЗа

SELECT Name AS "Факультет",

Fund AS "Фонд факультета",

(SELECT MAX(Fund) FROM DEPARTMENT) AS "МАКС фонд кафедр",

(SELECT MIN(Fund) FROM DEPARTMENT) AS "МИН фонд кафедр"

FROM FACULTY

Подзапрос является связанным (коррелированным), если в нем используются атрибуты таблиц, определенных во внешней запросе. В этом случае подзапрос вычисляется для каждой строки, формируемой для фразы SELECT.

Пример. По каждому факультету, расположенному в корпусе 6, вывести:

- название факультета

- количество групп этого факультета с рейтингом, более 20

- количество преподавателей-профессоров

SELECT Name AS "Факультет",

(SELECT COUNT (DISTINCT GrpPK)

FROM DEPARTMENT d, SGROUP g

WHERE f.FacPK=d.FacFK AND d.DepPK=g.DepFK AND g.Rating > 20) AS "К-во групп",

(SELECT COUNT (DISTINCT TchPK)

FROM DEPARTMENT d, TEACHER t

WHERE f.FacPK=d.FacFK AND d.DepPK=t.DepFK AND

UPPER(t.Post)= 'профессор') AS "К-во профессоров"

FROM FACULTY f

WHERE Building= '6';

  1. Варианты заданий

Далее приводится 18 вариантов заданий. Каждый вариант состоит из 7 запросов, которые относятся к следующим категориям (в порядке их следования):

  1. Некоррелируемые подзапросы

  2. Коррелируемые (зависимые, связанные) подзапросы

  3. Коррелируемые подзапросы и предикат EXISTS

  4. Коррелируемые подзапросы и предикат ANY, SOME, ALL

  5. Подзапросы во фразе HAVING

  6. Подзапросы во фразе FROM

  7. Подзапросы во фразе SELECT

ВНИМАНИЕ. В предлагаемых запросах используются константы (имена преподавателей, названия кафедр и факультетов, названия дисциплин), которые могут отсутствовать в вашей базе данных. ЗАМЕНЯЙТЕ ИХ НА ТЕ, КОТОРЫЕ ДЕЙСТВИТЕЛЬНО ИМЕЮТСЯ В ВАШЕЙ БАЗЕ ДАННЫХ!

    1. Вариант 1

1) По каждой кафедере, расположенной в том же корпусе, что и факультет, деканом которого является Иванов, вывести следующую информацию в столбцах с соответствующими именами:

- название кафедры Кафедра

- имя заведующего Заведующий.

2) Вывести названия факультетов, которые имеют кафедры в корпусе 6

3) Вывести названия факультетов из корпуса 6 и имена их деканов, на которых имеется хотя бы одна кафедра

4) Вывести названия факультетов, фонды финансирования которых. увеличенные на 200000, больше фондов финансирования любой из их кафедр. Привести два варианта – с оператором ALL и функцией MAX.

5) Вывести такие пары значений: «название дисциплины-имя преподавателя», что

- данный преподаватель преподает эту дисциплину;

- он преподает ее более, чем 2-м группам

- он имеет больше занятий по этой дисциплине, чем преподаватель Иванов по дисциплине СУБД

6) Вывести среднее количество дисциплин на один факультет

7) По каждому факультету вывести:

- название факультета

- количество кафедр

- суммарный фонд кафедр

- количество студентов

Соседние файлы в папке Russian