Создание внешних соединений (визуальные инструменты для баз данных)
Область применения: SQL Server
По умолчанию Конструктор запросов и представлений создает внутреннее соединение таблиц. Внутренние соединения исключают строки, не соответствующие строке из другой таблицы. Однако внешние соединения возвращают все строки хотя бы из одной таблицы или представления, упомянутых в предложении 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)
См. также
Запросы с соединениями (визуальные инструменты для баз данных)
Диалоговое окно "Соединение" (визуальные инструменты для баз данных)