Соединение древовидного запроса с другими таблицами
Oracle не позволяет соединять другие таблицы в древовидном запросе с использованием простого оператора SELECT. Например, предположим, что к каждой записи служащего, выбранной в древовидном запросе, нужно также добавить наименование его отдела. Можно попытаться использовать следующий запрос: Select rpad (' (level-l)*3) — |e.emp_last_name, d. dept_name from emp e, dept d where e. dept_no = d. dept_… Читать ещё >
Соединение древовидного запроса с другими таблицами (реферат, курсовая, диплом, контрольная)
Oracle не позволяет соединять другие таблицы в древовидном запросе с использованием простого оператора SELECT. Например, предположим, что к каждой записи служащего, выбранной в древовидном запросе, нужно также добавить наименование его отдела. Можно попытаться использовать следующий запрос:
select rpad (' (level-l)*3) | |e.emp_last_name, d. dept_name from emp e, dept d where e. dept_no = d. dept_ no connect by e. supervisor_emp_id = prior e. emp Jd start with e. supervisor_emp_id is null;
ORA-1 437: cannot have join with CONNECT BY.
В этом примере показано, что таким образом невозможно присоединить другую таблицу к древовидному запросу для получения дополнительной информации. Однако, начиная с версии 7.1 RDBMS Oracle, можно использовать динамическое представление внутри фразы from запроса для создания древовидного запроса как отдельного автономного блока с целью облегчения операции соединения. Следующий пример может быть использован для выборки информации о служащем и всех его подчиненных: select d. dept_name, el. emp_Iast_name, el. salary from emp el, dept d, (select empjd from emp.
connect by supervisor _ emp_ id = prior emp_ id start with emp_security_uid = uid) e2.
where el. emp_id = e2. emp_id and el. dept_no = d. dept_no;
DEPT_NAME EMPJLAST_NAME SALARY.
CONSULTING SERVICES LUNDY 95 000.
CONSULTING SERVICES BEECHER 72 000.
CONSULTING SERVICES NEUMANN 65 000.
CONSULTING SERVICES MITTLER 64 000.
CONSULTING SERVICES CANNELL 68 000.