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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!