Поделиться через


Создание внешних соединений (визуальные инструменты для баз данных)

Применимо к:SQL Server

По умолчанию Конструктор запросов и представлений создает внутреннее соединение таблиц. Внутренние соединения исключают строки, не соответствующие строке из другой таблицы. Однако внешние соединения возвращают все строки хотя бы из одной таблицы или представления, упомянутых в предложении FROM, если эти строки удовлетворяют условиям поиска WHERE или HAVING. Если необходимо включить строки данных, которые не имеют совпадений в соединяемой таблице, в результирующий набор, можно создать внешнее соединение.

При создании внешнего соединения имеет значение порядок, в котором указывают таблицы в инструкции SQL (как показано на панели SQL). Первая таблица становится «левой» таблицей, а вторая — «правой» (Реальный порядок, в котором указываются таблицы на панели диаграммы , несущественен.) При указании левого или правого внешнего соединения указывается порядок, в котором таблицы были добавлены в запрос, и порядок, в котором они появляются в инструкции SQL на панели SQL.

Создание внешнего соединения

  1. Создайте соединение автоматически или вручную. Дополнительные сведения см. в статьях Автоматическое соединение таблиц (визуальные инструменты для баз данных) или Соединение таблицы вручную (визуальные инструменты для баз данных).

  2. Выберите линию соединения на панели диаграммы, а затем в меню Конструктор запросов выберите Выбрать все строки из <имя_таблицы>, указав команду, включающую таблицу, дополнительные строки которой необходимо включить.

    • Выберите первую таблицу для создания левого внешнего соединения.

    • Выберите вторую таблицу для создания правого внешнего соединения.

    • Выберите обе таблицы для создания полного внешнего соединения.

При указании внешнего соединения конструктор запросов и представлений изменяет линию соединения для отображения внешнего соединения.

Кроме того, конструктор запросов и представлений изменяет инструкцию 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)  

См. также:

Запросы с соединениями (визуальные инструменты для баз данных)
Диалоговое окно «Соединение» (визуальные инструменты для баз данных)