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


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

По умолчанию конструктор запросов и представлений создает внутреннее соединение таблиц. Внутренние соединения исключают строки, не соответствующие строке из другой таблицы. Однако внешние соединения возвращают все строки хотя бы из одной таблицы или представления, упомянутых в предложении 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)

См. также

Справочник

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

Другие ресурсы

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