Практическое руководство. Создание внешних соединений
По умолчанию в конструкторе запросов и представлений создается внутреннее соединение таблиц. Если необходимо включить строки данных, которые не имеют совпадений в соединяемой таблице, в результирующий набор, можно создать внешнее соединение.
При создании внешнего соединения имеет значение порядок, в котором указаны таблицы в инструкции SQL (как показано в области SQL). Первая таблица становится "левой" таблицей, а вторая — "правой". (Фактический порядок, в котором указаны таблицы в области схем, не имеет значения). При установке левого или правого внешнего соединения указывается порядок, в котором таблицы были добавлены в запрос, и порядок, в котором они появляются в инструкции SQL в области SQL.
Примечание
Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.
Чтобы создать внешнее соединение
Создайте соединение автоматически или вручную. Дополнительные сведения см. в разделе Практическое руководство. Автоматическое соединение таблиц или Практическое руководство. Соединение таблиц вручную.
Выберите линию соединения в области схем и в меню Конструктор запросов выберите пункт Выбрать все строки из <имя_таблицы>, в результате чего будет выбрана команда, включающая таблицу, дополнительные строки которой необходимо включить.
Выберите первую таблицу для создания левого внешнего соединения.
Выберите вторую таблицу для создания правого внешнего соединения.
Выберите обе таблицы для создания полного внешнего соединения.
Примечание
В некоторых базах данных, например Oracle, полные внешние соединения не поддерживаются.
При указании внешнего соединения конструктор запросов и представлений изменяет линию соединения для отображения внешнего соединения.
Кроме того, конструктор запросов и представлений изменяет инструкцию 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)