Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

СУБД / субд

.doc
Скачиваний:
26
Добавлен:
26.05.2014
Размер:
23.04 Кб
Скачать

Задание №4.

Рассмотрим базу данных сотрудников, состоящую из сле-

дующих двух таблиц:

сотрудники

(номер_сотрудника INTEGER PRIMARY KEY,

фамилия CHAR(20),

...)

подчиненные (

номер_сотрудника INTEGER NOT NULL,

номер_подчиненного INTEGER NOT NULL,

фамилия_подчиненного CHAR(20) NOT NULL,

...

PRIMARY KEY (номер_сотрудника,номер_подчиненного),

FOREIGN KEY номер_сотрудника REFERENCES

сотрудники(номер_сотрудника))

Задача состоит в том, чтобы написать запрос, показывающий сколько подчиненных у каждого сотрудника.

Запрос должен выдавать номер сотрудника, фамилию сотрудника, количество подчиненных у этого сотрудника.

CREATE FUNCTION количество_подчиненых (

номер IN подчиненные.номер_сотрудника %TYPE

) RETURN INTEGER IS

количество INTEGER;

BEGIN

SELECT COUNT(*) INTO количество

FROM подчиненные

WHERE номер_сотрудника = номер;

RETURN количество;

END количество_подчиненных;

SELECT номер_сотрудника, фамилия, количество_подчиненных (номер_сотрудника)

FROM сотрудники;

-- создание таблиц

CREATE TABLE сотрудники (

номер_сотрудника INTEGER NOT NULL,

фамилия CHAR(20) NOT NULL,

PRIMARY KEY (номер_сотрудника)

);

CREATE TABLE подчиненные (

номер_сотрудника INTEGER NOT NULL,

номер_подчиненого INTEGER NOT NULL,

фамилия_ подчиненного CHAR(20) NOT NULL,

PRIMARY KEY (номер_сотрудника, номер_подчиненого )

FOREIGN KEY (номер_сотрудника) REFERENCES

сотрудники (номер_сотрудника)

);

Соседние файлы в папке СУБД