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