Введение в курс "Базы данных" - Объединение таблиц

E-mail Печать PDF
Рейтинг пользователей: / 9
ХудшийЛучший 
Индекс материала
Введение в курс "Базы данных"
Классификация БД по их использованию
Реляционные БД (MS Access)
Ключи
Связи между таблицами
Неформальные методы приведения таблиц к третьей нормальной форме
Операции в БД (VBA)
Операции над записями
SQL
Оператор Select
DISTINCT
FROM
Группировка
Объединение таблиц
Параметры
Перекрёстные запросы
Обновление данных
Удаление данных
Подчинённые запросы
Создание таблиц
Добавление новых полей
Tехнология разработки программного обеспечения, использующего базы данных
Доступ к данным в VB 6.0
Работа с записями
Отчёты в VB6
Доступ к данным в C++ Builder
Отчёты в C++ Builder
Создание многоуровневых приложений
Доступ к данным в C# (Visual Studio 2005)
Создание отчётов
OLAP технологии. XML язык
SQL Server
Триггер
Программирование триггера
XML
Все страницы

Объединение таблиц

Существует 2 способа объединения таблиц:

 

Объединение записей из двух таблиц, если связующие поля этих таблиц содержат одинаковые значения. Оно осуществляется с помощью 3 операторов: INNER JOIN, LEFT JOIN, RIGHT JOIN.
Синтаксис:
FROM таблица_1 INNER JOIN таблица_2 ON таблица_1.поле_1 оператор таблица_2.поле_2

 

ТАБЛИЦА_1, ТАБЛИЦА_2 - имена таблиц, записи которых подлежат объединению.

 

ПОЛЕ_1, ПОЛЕ_2 - Имена объединяемых полей.  Если эти поля не являются числовыми, то должны иметь одинаковый тип данных и содержать данные одного рода, однако, поля могут иметь разные имена.

 

ОПЕРАТОР - любой оператор сравнения: "=," "<," ">," "<=," ">=," или "<>".

 

Операцию INNER JOIN можно использовать в любом предложении FROM.  Это самые обычные типы связывания.  Они объединяют записи двух таблиц, если связующие поля обеих таблиц содержат одинаковые значения. Операцию INNER JOIN можно использовать с таблицами "Начальники" и "Сотрудники" для отбора всех сотрудников каждого отдела.

 

SELECT Начальники.Фамилия, Начальники.Отдел, Сотрудники.Фамилия, Сотрудники.Отдел

 

FROM [Начальники] INNER JOIN Сотрудники ON Начальники.Отдел = Сотрудники.Отдел;

 

Попытка объединить поля Memo или объекта ActiveX приведет к возникновению ошибки. Допускается объединение двух числовых полей подобных типов, например, поле счетчика и поля с типом "Длинное целое".  Однако нельзя объединить типы полей "С плавающей точкой (4 байт)" и "С плавающей точкой (8 байт)".

 

SELECT поля

 

FROM таблица_1 INNER JOIN таблица_2

 

ON таблица_1.поле_1 оператор таблица_2.поле_1 AND

 

ON таблица_1.поле_2 оператор таблица_2.поле_2) OR

 

ON таблица_1.поле_3 оператор таблица_2.поле_3)];

 

Операции JOIN могут быть вложенными; в таком случае используйте следующий синтаксис:

 

SELECT поля

 

FROM таблица_1 INNER JOIN

 

(таблица_2 INNER JOIN [( ]таблица_3 

 

[INNER JOIN [( ]таблица_X [INNER JOIN ...)] 

 

ON таблица_3.поле_3 оператор таблица_X.поле_X)]

 

ON таблица_2.поле_2 оператор таблица_3.поле_3) 

 

ON таблица_1.поле_1 оператор таблица_2.поле_2;

 

Операции LEFT JOIN или RIGHT JOIN могут быть вложены в операцию INNER JOIN, но операция INNER JOIN не может быть вложена в LEFT JOIN или RIGHT JOIN.

 

Для отбора же всех начальников  (в том числе тех, у которых нет ни одного сотрудника) или всех сотрудников (в том числе тех, которых нет начальника) следует использовать операцию LEFT JOIN или RIGHT JOIN, которая создает внешнее объединение.

 

Синтаксис:

 

FROM таблица_1 [ LEFT | RIGHT ] JOIN таблица_2

 

ON таблица_1.поле_1 оператор таблица_2.поле_2

 

Используйте операцию LEFT JOIN для создания левого внешнего объединения, при котором все записи из первой (левой) таблицы включаются в динамический набор, даже если во второй (правой) таблице нет соответствующих им записей.

 

Используйте операцию RIGHT JOIN для создания правого внешнего объединения, при котором все записи из второй (правой) таблицы включаются в динамический набор, даже если в первой (левой) таблице нет соответствующих им записей.

 

2-й способ объединения таблиц заключается в простом последовательном присоединении к записям первой таблицы записей второй таблицы. Такое объединение осуществляется с помощью оператора UNION. Он создает запрос на объединение, который объединяет результаты нескольких независимых запросов или таблиц.

 

Синтаксис:

 

[TABLE] запрос_1 UNION [ALL] [TABLE] запрос_2 [UNION [ALL] [TABLE] запрос_n [ ... ]]

 

Ниже перечислены аргументы операции UNION:

 

ЗАПРОС_1 - инструкция SELECT, имя сохраненного запроса или имя сохраненной таблицы, перед которым стоит зарезервированное слово TABLE.

 

В одной операции UNION можно объединить в любом наборе результаты нескольких запросов, таблиц и инструкций SELECT. По умолчанию повторяющиеся записи не возвращаются при использовании операции UNION, однако, в нее можно добавить предикат ALL, чтобы гарантировать возврат всех записей.  Кроме того, такие запросы выполняются быстрее. Все запросы, включенные в операцию UNION, должны отбирать одинаковое число полей; при этом типы данных и размеры полей не обязаны совпадать.

 

Используйте псевдонимы только в первом предложении SELECT, потому что в остальных они пропускаются.  В предложении ORDER BY ссылайтесь на поля по их названиям в первом предложении SELECT.

 

В каждом аргументе запрос допускается использование предложения GROUP BY или HAVING для группировки возвращаемых данных.            В конец последнего аргумента запрос можно включить предложение ORDER BY, чтобы отсортировать возвращенные данные. В Microsoft Access аргументами операции UNION (запрос1, запрос2,...запросN) могут служить инструкция SELECT, имя сохраненного запроса Microsoft Access или имя сохраненной таблицы Microsoft Access с предшествующим зарезервированным словом TABLE.

 



 

Добавьтe Ваш комментарий

Ваше имя (псевдоним):
Ваш адрес почты:
Заголовок:
Комментарий: