русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

II.2.6. Внешние соединения


Дата добавления: 2015-07-09; просмотров: 541; Нарушение авторских прав


Использование внешнего соединения для таблицы EMPLOYEE. Внешнее соединение задается опреатором (+) (символ плюс, заключенный в круглые скобки) и позволяет выбрать строки одной таблицы, для которых в другой таблице нет строк, соответствующих условию соединения. Оператор (+) помещается на той стороне соединяющего условия, которая соответствует таблице с отсутствующими данными. Он предписывает Oracle в случае отсутствия строк, удовлетворяющих условию соединения, возвращать NULL (неопределенное значение) для всех выражений списка выборки, которые содержат имена столбцов таблицы с отсутствующими данными.

Q2_23 Получить перечень отделов с их названиями, фамилии сотрудников и идентификаторы их работы. Список должен включать и те отделы, в которых нет сотрудников.

 

demo@10g> select d.DEPARTMENT_ID,last_name,job_id,name

from EMPLOYEE e,DEPARTMENT d

where e.DEPARTMENT_ID(+)=d.DEPARTMENT_ID

order by d.DEPARTMENT_ID;

Отделы 34, 40 и их названия представлены, а сотрудников этих отделах в таблице EMPLOYEE нет, как и самих номеров отделов.

 

Q2_24 В синтаксисе стандарта ANSI SQL, определенного для SQL/92 (начиная с Oracle9i) можно указывать в инструкции FROM тип объ­единения вместе с ключевыми словами LEFT JOIN.

Выполним запрос Q2_16 в варианте внешнего объединения:

 

demo@10g> select last_name,job_id,name,department_id

from DEPARTMENT left join EMPLOYEE

using (DEPARTMENT_ID)

where department_id in (10,34,40);

 

Поменяем местами таблицы DEPARTMENT, EMPLOYEE в последнем запросе:

demo@10g> select last_name,job_id,name,department_id

from EMPLOYEE left join DEPARTMENT

using (DEPARTMENT_ID)

where department_id in (10,34,40);

Внешнее объединение не «сработало». Слева надо вставлять название той таблицы, в которой есть информация (отделы 34, 40). Если мы заменим в последнем запросе «left join» на «right join» внешнее объединение отработает верно:



demo@10g> select last_name,job_id,name,department_id

from EMPLOYEE right join DEPARTMENT

using (DEPARTMENT_ID)

where department_id in (10,34,40);

Если теперь предположить, что не только есть отделы, в которых нет служащих, но и есть служащие, не прикрепленные ни к какому отделу, то запрос, который бы показал и отделы, в которых нет служащих, и служащих, не прикрепленных ни к какому отделу, должен использовать «full outer join».

 

Q2_25 Комплексный пример использования объединений (внутренних и внешних).

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

 

demo@10g> select e.last_name name,function job,m.last_name boss,e.salary sal,s.

grade_id grade,d.name department

from EMPLOYEE e,EMPLOYEE m,SALARY_GRADE s,DEPARTMENT d,JOB

where e.manager_id = m.EMPLOYEE_ID(+)

and e.salary between s.lower_bound and s.upper_bound

and e.DEPARTMENT_ID = d.DEPARTMENT_ID

and e.job_id=job.job_id

order by s.grade_id desc,e.salary desc,d.DEPARTMENT_ID,e.last_name



<== предыдущая лекция | следующая лекция ==>
II.2.5. Объединения (внутренние) | II.2.7. Иерархические запросы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.345 сек.