- •Глава 10. Система управления базами данных access 2007
- •10.1 Компоненты экономических информационных систем. Классификация и основные свойства единиц информации
- •10.2 Понятие предметной области
- •10.3 Понятия о базах данных и системах управления ими. Классификация баз данных
- •10.4 Модель данных. Основные виды моделей. Сравнение моделей данных
- •10.5 Функциональные зависимости и ключи.
- •10.6 Понятие нормализации отношений. Нормальные формы
- •10.7 Реляционная база данных и ее особенности. Виды связей между реляционными таблицами
- •10.8 Таблицы и их структура. Типы полей и их свойства. Контроль вводимых данных
- •10.9 Операции над таблицами. Фильтрация данных. Установление связей между таблицами. Обеспечение целостности данных
- •10.10 Запросы к базе данных и их использование. Виды запросов. Технология создания
- •10.11 Запросы к базе данных с использованием языка sql. Извлечение данных. Функции агрегирования
- •10.12 Запросы к базе данных с использованием языка sql. Извлечение данных из нескольких таблиц. Соединения таблиц
- •10.13 Запросы к базе данных с использованием языка sql. Qsl-запросы на изменение. Подчиненный запрос
- •10.14 Формы, их виды. Структура формы. Свойства формы. Технология создания форм. Элементы управления и их использование в формах
- •10.15 Отчеты, их назначение и использование. Виды отчетов. Структура отчета. Технология создания
- •10.17 Макросы и их конструирование
10.12 Запросы к базе данных с использованием языка sql. Извлечение данных из нескольких таблиц. Соединения таблиц
Соединение таблиц – это набор результатов от операции соединения, выполненной над двумя или несколькими таблицами. При выполнении соединения имена таблиц перечисляются в предложении запроса FROM, результатом запроса будет декартово произведение таблиц, т.к. не определены связи между таблицами. Связи между таблицами в SQL могут быть установлены с помощью предложений WHERE и INNER JOIN.
Связь между таблицами с помощью предложения WHERE.
Если в качестве критерия поиска в предложении WHERE задаются условия, основанные на равенствах, то выполняется внутреннее соединение 2-х таблиц. Такое соединение называется эквисоединением. Синтаксис запроса на соединение будет иметь вид:
SELECT список_полей
FROM таблица_1 , таблица_2
WHERE таблица_1.поле_1 оператор таблица_2.поле_2
Где:
таблица_1, таблица_2 - имена таблиц, записи которых подлежат объединению;
поле_1, поле_2 - имена объединяемых полей. Если эти поля не являются числовыми, то должны иметь одинаковый тип данных и содержать данные одного рода, однако, поля могут иметь разные имена;
оператор -любой оператор сравнения: "=," "<," ">," "<=," ">=," или "<>".
Множественные соединения (более чем двух) таблиц будут выполняться, если пары связанных полей связать логической операцией AND. Синтаксис запроса на множественное соединение:
SELECT список_полей
FROM таблица_1 , таблица_2 , таблица 3
WHERE таблица_1.поле_1 оператор таблица_2.поле_2 AND таблица_2.поле_1 оператор таблица_3.поле_1
Связь между таблицами с помощью предложения INNER JOIN.
Внутреннее соединение (INNER JOIN) является типом соединений, принятым по умолчанию. В этом случае синтаксис запроса на соединение будет иметь вид:
SELECT список_полей
FROM таблица_1 INNER JOIN таблица_2
ON таблица_1.поле_1 оператор таблица_2.поле_2
Чтобы установить связь по нескольким полям, следует связать несколько предложений ON в инструкции JOIN:
SELECT список_полей
FROM таблица_1 INNER JOIN таблица_2
ON таблица_1.поле_1 оператор таблица_2.поле_1 {AND| OR}
ON таблица_1.поле_2 оператор таблица_2.поле_2
Внутреннее соединение задает набор результатов, в который будут включены лишь те строки, которые соответствуют условию ON, а все несоответствующие строки будут отброшены.
Полные внешние соединения (FULL OUTER JOIN) задают набор результатов, состоящих из строк, соответствующих условию ON, так и из строк, не соответствующих условию ON. Для строк, не соответствующих условию ON, значением колонки станет NULL. В этом случае синтаксис запроса на соединение будет иметь вид:
SELECT список_полей
FROM таблица_1 FULL OUTER JOIN таблица_2
ON таблица_1.поле_1 оператор таблица_2.поле_2
Левые внешние соединения (LEFT OUTER JOIN) возвращают строки, в которых произошло соответствие условию поиска, плюс все строки из таблицы, заданной слева от ключевого слова JOIN. В этом случае синтаксис запроса на соединение будет иметь вид:
SELECT список_полей
FROM таблица_1 LEFT OUTER JOIN таблица_2
ON таблица_1.поле_1 оператор таблица_2.поле_2
Правые внешние соединения (RIGHT OUTER JOIN) возвращают строки, в которых произошло соответствие условию поиска, плюс все строки из таблицы, заданной справа от ключевого слова JOIN. В этом случае синтаксис запроса на соединение будет иметь вид:
SELECT список_полей
FROM таблица_1 RIGHT OUTER JOIN таблица_2
ON таблица_1.поле_1 оператор таблица_2.поле_2