Внешние соединения
При использовании внешнего соединения результат запроса будет содержать все записи одной из таблиц даже в том случае, если в связанной с ней таблице отсутствуют совпадающие значения. Этот тип соединения реализуется оператором 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. Соединение равенства, соединение неравенства, внешние соединения
Дата добавления: 2015-10-21; просмотров: 583;