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


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

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

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

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

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

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

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

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

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

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

Кроме того, конструктор запросов и представлений изменяет инструкцию SQL в области для отражения изменений типа соединения, как показано в следующей инструкции:

SELECT employee.job_id, employee.emp_id,   employee.fname, employee.minit, jobs.job_descFROM employee LEFT OUTER JOIN jobs ON     employee.job_id = jobs.job_id

Так как внешнее соединение включает несовпадающие строки, можно использовать его для поиска строк, которые нарушают ограничение внешнего ключа. Чтобы сделать это, надо создать внешнее соединение и добавить условие поиска строк, в которых значение столбца первичного ключа самой правой таблицы равно NULL. Например, следующее внешнее соединение находит строки в таблице employee, которая не содержит соответствующих строк в таблице jobs:

SELECT employee.emp_id, employee.job_idFROM employee LEFT OUTER JOIN jobs    ON employee.job_id = jobs.job_idWHERE (jobs.job_id IS NULL)