ВУЗ:
Составители:
Рубрика:
78
образом обрабатывается значение «неизвестно». Целесообразно
использовать в запросе встроенные предикаты.
8. Коррелированные запросы
Для обработки рабочих таблиц бывает необходимо организовать
выполнение вложенного запроса для каждой строки основной таблицы,
причем результат выполнения вложенного запроса либо включает
строку кандидат в запрос, либо отвергает. Примером
коррелированного запроса может служить следующее: ввести всех
сотрудников, получающих оклад ниже, чем среднее значение оклада по
тому отделу, в котором служит сотрудник.
SELECT ENAME, SAL SALARY, DEPTNO
FROM EMP E
WHERE SAL < (SELECT AVG (SAL)
FROM EMP
WHERE DEPTNO = E .DEPTNO)
ORDER BY DEPTNO;
Реляционные таблицы используются для хранения иерархических
справочников:
- консолидация отчетов;
- часть – целое для узлов и деталей;
- подчиненность сотрудников.
Вводятся атрибуты для каждого объекта, характеризующие
родительский узел. Существует особая форма оператора select,
реализующая обход дерева. Для организации обхода дерева
используется псевдостолбец с именем level, который содержит уровни
иерархии для объектов, автоматически формируется сервером данных.
Пример: сформировать отчет содержащий следующие сведения:
уровень подчиненности, табельный номер сотрудника, табельный
номер его начальника и их оклады.
SELECT LPAD (EMPNO, LEVEL*4) EMPLOYEE_NUMBER,
DEPTNO, EMPNO, ENAME, JOB, SAL
FROM EMP
CONNECT BY PRIOR EMPNO = MGR
START WITH MGR IS NULL;
Предложение connect by включает условие связывания родительской и
дочерней вершин. Параметр prior управляет направлением обхода
дерева. Если prior предшествует emp_no, то строка с таким табельным
номером является предыдущей, а следующей будет строка с
табличным номером начальника, т. е. дерево обходится снизу вверх.
Страницы
- « первая
- ‹ предыдущая
- …
- 74
- 75
- 76
- 77
- 78
- …
- следующая ›
- последняя »
