Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД / Uchpos / Gl_4.doc
Скачиваний:
24
Добавлен:
27.04.2015
Размер:
342.53 Кб
Скачать

On таблица1.Поле2 оператор_сравнения таблица2.Поле2) or

ON таблица1.поле3 оператор_сравнения таблица2.поле3)];

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

SELECT поля

FROM таблица1 INNER JOIN

(таблица2 INNER JOIN [( ] таблица3

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

ON таблица3.поле3 оператор_сравнения таблица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.

Синтаксис

From таблица1 [ left | right ] join таблица2

ON таблица1.поле1 оператор_сравнения таблица2.поле2

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

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

Примеры:

Определить имена поставщиков, коды поставляемых товаров и их количество с текущей датой поставки:

SELECT Имя, [Код товара], Количество, Дата

FROM Поставщики INNER JOIN Поставки ON Поставщики.[Код поставщика] = Поставки.[Код поставщика]

WHERE Адрес="Калининград" AND Дата=Date();

Определить наименования поставляемых товаров и их количество, имена поставщиков с датой поставки 30/07/99:

SELECT Наименование, Имя, Количество, Дата

FROM Товары INNER JOIN (Поставщики INNER JOIN Поставки ON Поставщики.[Код поставщика] = Поставки.[Код поставщика]) ON Товары.[Код товара] = Поставки.[Код товара]

WHERE Дата>#30/07/99#;

Определить наименования поставляемых товаров и их стоимость с датой поставки 8/10/99:

SELECT Наименование, Sum([Цена]*[Количество]) AS Сумма

FROM Товары INNER JOIN Поставки ON Товары.[Код товара] = Поставки.[Код товара]

WHERE Дата>#8/10/99#

GROUP BY Наименование;

Определить наименования всех товаров и ,для поставляемых товаров, коды поставщиков и количество:

SELECT Наименование, [Код поставщика], Количество

FROM Товары LEFT JOIN Поставки ON Товары.[Код товара] = Поставки.[Код товара];

Объединение результатов нескольких запросов. Операция union

Создает запрос на объединение, который объединяет результаты выполнения нескольких независимых запросов или таблиц.

Синтаксис

[TABLE] запрос1 UNION [ALL][TABLE] запрос2 [UNION [ALL] [TABLE] запросn [ ... ]]

где запрос1-n - инструкция SELECT, имя сохраненного запроса или имя сохраненной таблицы, перед которой стоит зарезервированное слово TABLE.

В одной операции UNION можно объединить в любом наборе результаты нескольких запросов, таблиц и инструкций SELECT.

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

Все запросы, включенные в операцию UNION, должны отбирать одинаковое число полей; при этом типы и размеры полей не имеют значения.

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

В каждом аргументе запрос можно использовать предложения GROUP BY и/или HAVING для группирования возвращаемых данных.

В конец последнего аргумента запрос можно включить предложение ORDER BY, чтобы отсортировать возвращенные данные.

Примеры:

Объединить в одну таблицу данные из трех таблиц:

SELECT Тип AS Код, Наименование FROM Типы UNION

SELECT [Код товара],Наименование FROM Товары UNION

SELECT [Код поставщика],Имя FROM Поставщики

WHERE Адрес = "Калининград"

ORDER BY Наименование;

Объединить таблицу Типы и поля Код товара и Дата из таблицы Поставки с датой поставки меньше 10/09/99:

TABLE Типы UNION ALL

SELECT [Код товара], Дата FROM Поставки

WHERE Дата > #10/09/99#;

Соседние файлы в папке Uchpos