русс | укр

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

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

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

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


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

II.2.5. Объединения (внутренние)


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


При внутренних объединениях выводится информация из извлекаемых столбцов, присутсвующая в таблицах, участвующих в запросе. В отличие от внутреннего, при внешнем объединении выводится частичная информация по запросу, даже если в одной из объединяемых таблиц информация отсутствует. Так, в нижеприводимом запросе Q2_16 выводится информация, связанная только с отделом 10, в котором существуют служащие, а информация об отделах 34, 40 в которых служащих нет, не выводится. Внешнее объединение позволяет вывести информацию и об отделах 34, 40, при этом столбцы «last_name», «job_id» будут не заполнены. Как выполнять внешние объединения, мы ознакомимся в разделе II.2.6.

Q2_16 Соединение по равенству таблиц EMPLOYEE, DEPARTMENT по полю DEPARTMENT_ID

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

from EMPLOYEE,DEPARTMENT

where EMPLOYEE.DEPARTMENT_ID=DEPARTMENT.DEPARTMENT_ID

and DEPARTMENT.DEPARTMENT_ID in (10,34,40);

Q2_17 Использование псевдонимов имен таблиц

 

demo@10g> select last_name,job_id,name

from EMPLOYEE e,DEPARTMENT d

where e.DEPARTMENT_ID=d.DEPARTMENT_ID

and e.DEPARTMENT_ID=10;

Q2_18 Соединения не по равенству

Категория оплаты каждого сотрудника компании

 

demo@10g> select e.last_name,e.salary,s.grade_id

from EMPLOYEE e,SALARY_GRADE s

where e.department_id=30 and e.salary between s.lower_bound and s.upper_bound;

 

 

Q2_19 Соединение таблицы самой с собой

Список служащих, зачисленных на работу раньше своих руководителей

 

demo@10g> select e.last_name name,e.hire_date "date",e.job_id "job",

m.last_name "boss",m.hire_date "date"

from EMPLOYEE e,EMPLOYEE m

where e.manager_id=m.EMPLOYEE_ID

and e.hire_date < m.hire_date;



Q2_20 Служащие , имеющие оклад больше оклада своего руководителя

 

demo@10g> select e.last_name name,e.salary sal_emp,

m.last_name boss,m.salary sal_boss

from EMPLOYEE e,EMPLOYEE m

where e.manager_id=m.EMPLOYEE_ID

and e.salary > m.salary;

 

 

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

инструкции FROM тип объ­единения вместе с ключевым словом JOIN. Например, чтобы выпол­нить внутреннее объединение таблиц DEPARTMENT и LOCATION, можно написать:

from EMPLOYEE у inner join DEPARTMENT d

 

Q2_21 Пример использования синтаксиса объединения, использующего JOIN

demo@10g> select l.location_id, d.name, l.regional_group

from DEPARTMENT d inner join LOCATION l

on d.location_id = l.location_id

Другой вариант написания этого же запроса:

demo@10g> select location_id, d.name, l.regional_group

from DEPARTMENT d inner join LOCATION l

using (location_id);

Следует обратить внимание на то, что к имени location_id извлекаемого общего связывающего таблицы столбца мы уже не добавляем квалификатор («d.» или «l.»).

Преимущество нового синтаксиса объединения в том, что нет возможности непредумышленно сгенерировать декартово произведе­ние (на контрольных работах студенты нередко допускают эту грубую ошибку). Если указано сово JOIN, необходимо задать условие объединения. Если декартово произ­ведение действительно необходимо, оно задается явно (cross join)

Q2_22

demo@10g> select * from location cross join salary_grade;



<== предыдущая лекция | следующая лекция ==>
Использование подзапросов во фразе FROM | II.2.6. Внешние соединения


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


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

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

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


 


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

 
 

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

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