Как создать внешние соединения (визуальные инструменты для баз данных)
Изменения: 14 апреля 2006 г.
По умолчанию конструктор запросов и представлений создает внутреннее соединение таблиц. Внутренние соединения исключают строки, не соответствующие строке из другой таблицы. Однако внешние соединения возвращают все строки хотя бы из одной таблицы или представления, упомянутых в предложении FROM, если эти строки удовлетворяют условиям поиска WHERE или HAVING. Если необходимо включить строки данных, которые не имеют совпадений в соединяемой таблице, в результирующий набор, можно создать внешнее соединение.
При создании внешнего соединения имеет значение порядок, в котором указывают таблицы в инструкции SQL (как показано на панели SQL). Первая таблица становится «левой» таблицей, а вторая — «правой» (реальный порядок, в котором указываются таблицы в Панели «Диаграммы», несущественен). При указании левого или правого внешнего соединения указывается порядок, в котором таблицы были добавлены в запрос, и порядок, в котором они появляются в инструкции SQL на панели SQL.
Создание внешнего соединения
Создайте соединение автоматически или вручную. Дополнительные сведения см. в разделе Как автоматически соединять таблицы (визуальные инструменты для баз данных) или Как соединить таблицы вручную (визуальные инструменты для баз данных).
Выберите линию соединения на панели «Диаграммы» и из меню Конструктор запросов выберите пункт Выбрать все строки из <имя_таблицы>, выбирая команду, которая включает таблицу, дополнительные строки которой необходимо включить.
- Выберите первую таблицу для создания левого внешнего соединения.
- Выберите вторую таблицу для создания правого внешнего соединения.
- Выберите обе таблицы для создания полного внешнего соединения.
При указании внешнего соединения конструктор запросов и представлений изменяет линию соединения для отображения внешнего соединения.
Кроме того, конструктор запросов и представлений изменяет инструкцию SQL на панели SQL для отражения изменений типа соединения, как показано в следующей инструкции:
SELECT employee.job_id, employee.emp_id,
employee.fname, employee.minit, jobs.job_desc
FROM employee LEFT OUTER JOIN jobs ON
employee.job_id = jobs.job_id
Так как внешнее соединение включает несовпадающие строки, можно использовать его для поиска строк, которые нарушают ограничение внешнего ключа. Чтобы сделать это, надо создать внешнее соединение и добавить условие поиска строк, в которых значение столбца первичного ключа самой правой таблицы равно NULL. Например, следующее внешнее соединение находит строки в таблице employee
, которая не содержит соответствующих строк в таблице jobs
:
SELECT employee.emp_id, employee.job_id
FROM employee LEFT OUTER JOIN jobs
ON employee.job_id = jobs.job_id
WHERE (jobs.job_id IS NULL)
См. также
Основные понятия
Работа с внешними соединениями
Другие ресурсы
Запросы с соединениями (визуальные инструменты для баз данных)
Диалоговое окно «Соединение» (визуальные инструменты для баз данных)