Во всех рассмотренных ранее в этой главе примерах данные при формировании запроса выбирались из одной таблицы. На практике при формировании запросов часто используются выборки из нескольких таблиц, т. к. в реляционных базах данных информация содержится не в одной отдельной таблице, а в совокупности связанных таблиц.
Рис. 9.14. Вкладка Join содержит условия объединения таблиц
Если таблица, добавляемая в конструктор запросов, не имеет установленных в базе данных связей с уже размещенными в конструкторе таблицами, на экране открывается диалоговое окно Join Condition (Условие объединения) (рис. 9.15), в котором необходимо задать условие объединения двух таблиц.
В верхней части диалогового окна Join Condition (Условие объединения) размещены два раскрывающихся списка, содержащие поля, которые можно использовать для объединения таблиц. Ниже расположен переключатель Type of join (Тип объединения), содержащий опции, определяющие тип создаваемой между таблицами связи. Назначение опций описано в табл. 9.3.
Рис. 9.15. Определение условия объединения таблиц в диалоговом окне Join Condition
Таблица 9.3. Назначение опций диалогового окна Join Condition
Опция | Тип создаваемой связи |
Inner join
(Внутреннее объединение) |
Создает объединение, в котором выбираются только те записи, которые содержат совпадающие значения в полях связи |
Left join
(Объединение слева) |
Создает объединение, в котором выбираются все записи из левой таблицы, а также записи из правой таблицы, значения поля связи которого совпадают со значениями поля связи левой таблицы |
Right join
(Объединение справа) |
Создает объединение, в котором выбираются все записи из правой таблицы, а также записи из левой таблицы, значения поля связи которого совпадают со значениями поля связи правой таблицы |
Full join (Полное объединение) | Создает объединение, в котором выбираются все записи из правой и левой таблиц |
Замечание
По умолчанию Visual FoxPro при объединении таблиц использует опцию Inner join (Внутреннее объединение), при которой из таблиц выбираются только те записи, которые содержат совпадающие значения в полях связи.
Замечание
В отличие от постоянных отношений, определяемых между таблицами в базе данных, при объединении таблиц в конструкторе запросов вы можете использовать любые поля таблиц.
Установленные между таблицами условия объединения можно изменять. Для этого выполните следующие действия:
Совет
Для установления связи между таблицами в конструкторе запросов, как и в базе данных, можно использовать механизм "перенести-и-оставить". Выберите поле одной из таблиц, нажмите кнопку мыши и удерживая ее нажатой, перенесите поле на связываемое поле в другой таблице. После этого откройте диалоговое окно Join Condition (Условие объединения) и отредактируйте установленное условие объединения таблиц.