Соединение неравенства

В случае соединения неравенства информация из двух таблиц объединяется та­ким образом, чтобы значения в заданном поле одной таблицы не совпадали со зна­чениями соответствующего ему поля в другой таблице.

Синтаксис запроса при соединении неравенства аналогичен предыдущему случаю, только вместо оператора = в предложении WHERE используются операторы о, <, > и т. п.:

SELECT tablel.fieldl. table2.field2 {,….tableNfieldN}

FROM table1, table2 {,….. tableN}

WHERE tablel.common_fieldl <> table2.common_fieldl

{AND tablel.common_field2 > table2.common_field2}

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

Внешние соединения

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

Внешние соединения подразделяются на три группы:

· LEFT OUTER JOIN - левое внешнее соединение (в выборку включаются все запи­си таблицы, имя которой указано слева от оператора OUTER JOIN);

· RIGHT OUTER JOIN - правое внешнее соединение (в выборку включаются все за­писи таблицы, имя которой указано справа от оператора OUTER JOIN);

· FULL OUTER JOIN - полное внешнее соединение (в выборку включаются все за­писи из правой и левой таблиц).

Для внешнего соединения условие соединения указывается не с помощью предло­жения WHERE, а входит в оператор OUTER JOIN после ключевого слова ON:

SELECT tablel.fieldl. table2.field2 { tableN.fieldN}

FROM tablel LEFT [ RIGHT | FULL {OUTER} JOIN table2

ON условие

{LEFT | RIGHT | FULL {OUTER} JOIN table3

ON условие}

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

SELECT Товары.[Наименование]. Бимшродажи.[Продано]) AS [Всего продано] FROM Товары LEFT OUTER JOIN Продажи ON Товары.[Код товара]=Продажи.[Код товара] GROUP BY Товары.[Наименование]

Так как таблица Товары указана слева от оператора LEFT JOIN, то результирующая выборка будет содержать полный список товаров, включая даже те, которые ни разу не были проданы (рис.32).

Рис.32. Результат внешнего соединения двух таблиц

Вопросы для самоконтроля:

1. Компоненты TQuery и TDataSource

2. Реализация процедур открытия и закрытия набора дан­ных

3. Псевдонимы полей

4. Функции агрегирования:COUNT, SUM, MIN, МАХ, AVG

5. Использование агрегирующих функций при группировке данных

6. Сортировка результатов выборки с помощью предложения GROUP BY

7. Использования предложения HAVING

8. Соединение равенства, соединение неравенства, внешние соединения



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: