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


Отражение соединений в конструкторе запросов и представлений

При соединении таблиц конструктор запросов и представлений представляет соединение графически в области схем и как синтаксис языка SQL в области SQL.

Область схемы

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

Запрос издателей соединения линии PubInfo

Если таблицы соединены с использованием нескольких условий соединения, в конструкторе запросов и представлений отображается несколько строк соединений, как в следующем примере:

Снимок экрана DatabaseProjectDatabaseConnections

Если соединенные столбцы данных не отображаются (например прямоугольник, представляющий таблицу или объект с табличной структурой, свернут, или в соединении содержится выражение), строка соединения помещается в строку заголовка прямоугольника, представляющего таблицу или объект с табличной структурой.

Форма значка в середине линии соединения показывает, как соединяются таблицы или объекты с табличной структурой. Если в предложении JOIN используется оператор, отличный от оператора сравнения равно (=), то данный оператор отображается в значке строки соединения. В следующей ниже таблице перечислены значки, которые отображаются в строке соединения.

Значок линии соединения

Описание

Снимок экрана QueryJoinLineInnerJoinSymbol

Внутреннее соединение (создается с использованием знака равенства)

QueryJoinLineInnerJoinGreaterThanOperatorSymbol sc

Внутреннее соединение, основанное на операторе "больше".

Снимок экрана QueryJoinLinesOuterJoinLeftSymbol

Внешнее соединение, в котором участвуют все строки отображаемой слева таблицы, даже если они не имеют соответствий в связанной с ней таблице.

Снимок экрана QueryJoinLineOuterJoinRightSymbol

Внешнее соединение, в котором участвуют все строки отображаемой справа таблицы, даже если они не имеют соответствий в связанной с ней таблице.

Снимок экрана QueryJoinLineFullOuterSymbol

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

ПримечаниеПримечание
В некоторых базах данных, например Oracle, полные внешние соединения не поддерживаются.

Символы в конце строки соединения указывают тип соединения. В следующей ниже таблице перечислены типы соединений и значков, которые появляются в конце строки соединения.

Значок в конце линии соединения

Тип соединения

Снимок экрана QueryJoinLine1-to-1Symbol

Соединение "один к одному"

Снимок экрана QueryJoinLine1-to-ManySymbol

Соединение "один ко многим"

Снимок экрана QueryJoinLineEndSymbol

Конструктор запросов и представлений не может определить тип соединения. Такая ситуация особо часто возникает при создании соединения вручную.

Область SQL

В инструкции SQL соединение может быть выражено несколькими способами. Точный синтаксис зависит от используемой базы данных и от того, как определено соединение.

Параметры синтаксиса для соединения таблиц включают:

  • Квалификатор JOIN для предложения FROM. Ключевые слова INNER и OUTER определяют тип соединения. Такой синтаксис относится к стандарту ANSI SQL-92.

    Например, при соединении таблиц publishers и pub_info на основе столбца pub_id в каждой таблице результирующая инструкция SQL может выглядеть так:

    SELECT *
    FROM publishers INNER JOIN pub_info ON
       publishers.pub_id = pub_info.pub_id
    

    При создании внешнего соединения вместо слова INNER появляются слова LEFT OUTER или RIGHT OUTER.

  • Предложение WHERE сравнивает столбцы обеих таблиц. Предложение WHERE отображается в том случае, если база данных не поддерживает синтаксис JOIN (или если предложение WHERE введено вручную). Если для создания соединения используется предложение WHERE, в предложении FROM отображаются названия обеих таблиц.

    Например, следующая инструкция соединяет таблицы publishers и pub_info.

    SELECT *
    FROM publishers, pub_info
    WHERE  publishers.pub_id = pub_info.pub_id
    

См. также

Ссылки

Диалоговое окно "Соединение"

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

Выполнение запросов с помощью соединений