SELECT Наименование. Цена



Многотабличные запросы. Выборка данных из нескольких таблиц

- соединение равенства (обычно производится по первичному ключу связи.)

Для связывания таблиц воспользуемся общим для обеих таблиц по­лем Код клиента:

SELECT Клиенты.Фамилия. Клиенты.Имя,

Клиенты.Отчество, Продажи.Продано

FROM Клиенты. Продажи

WHERE Клиенты.[Код клиента]=Продажи.[Код клиента];

- внешние соединения (При использовании внешнего соединения результат запроса будет содержать все за­писи одной из таблиц даже в том случае, если в связанной с ней таблице отсутствуют совпадающие значения. Этот тип соединения реализуется оператором OUTER JOIN.)

Подзапросы

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

Запрос, содержащий подзапрос, называется сложным. В процессе его выполнения сначала выполняется подзапрос, а затем — основной запрос. При создании сложного запроса необходимо следовать следующему набору правил:

- подзапросы должны заключаться в круглые скобки;

- предложение ORDER BY может быть использовано только в основном запросе;

- подзапросы, возвращающие более одной записи, могут использоваться только с многозначными операторами;

- в основном запросе нельзя использовать оператор BETWEEN, ниже приведен синтаксис оператора SELECT с подзапросом:

 

Пример 6.1 Выберем из таблицы Продажи информацию о продажах товара с наиме­нованием Delphi 5:

 

SeLECT Заказано.[Код клиента], Продано. Цена

FroM Продажи WHERE [Код товара] = (SELECT [Код товара] FROM Товары WHERE Наименование='Delphi 5');

 

Оператор EXISTS

Оператор EXISTS используется для отбора записей, соответствующих заданному критерию.

 

Пример 6.2 Для иллюстрации работы оператора EXISTS рассмотрим следующий пример. Из таблицы Товары требуется отобрать товары, количество продаж которых превыша­ет 10. Сведения о продажах содержатся в поле Продано таблицы Продажи. Для по­лучения необходимой выборки воспользуемся оператором EXISTS:

 

SELECT Наименование. Цена

FROM Товары

WHERE EXISTS (SELECT [Код товара]

FROМ Продажи

WHERE (Продажи.Продано>10) AND Товары.[Код товара]=Продажи.[Код товара]);

 

В этом запросе после ключевого слова EXISTS следует оператор SELECT, отбираю­щий из таблицы Продажи записи, для которых количество продаж превышает 10. i Оператор EXISTS отбирает из таблицы Товары записи, в которых значение поля Код повара соответствует записям, отобранным из таблицы Продажи.

 

Оператор UNIQUE

Оператор UNIQUE используется для проверки записи таблицы на уникальность. По своему действию он аналогичен оператору EXISTS. Единственное отличие заключа­ется в том, что подзапрос, задаваемый после ключевого слова UNIQUE, не должен возвращать более одной записи.

 

Оператор ALL

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

 

Пример 6.3 Например, для того чтобы выбрать из таблицы Товары те товары, которые имеют цену большую, чем цена всех товаров, проданных в количестве более 10, использу­ется следующий запрос:

 

SELECT *

FROM Товары

WHERE Цена > АLL

(SELECT Продажи.Цена FROM Продажи WHERE Продажи.Продано>10);

Оператор ANY

Оператор ANY применяется для сравнения заданного значения с каждым из значе­ний некоторого набора данных. Если в предыдущем примере заменить оператор: ALL оператором ANY, то будет возвращён список товаров, цена которых больше, чем хотя бы у одного из товаров, проданных в количестве больше 10.

 


Дата добавления: 2015-12-19; просмотров: 22; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!