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


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

применимо к: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);