База данных представляет собой набор таблиц данных, которые позволяют логические отношения друг с другом. Вы используете отношения для связи таблиц по полям, которые у них общие. Таблица может быть частью любого числа отношений, но каждое отношение всегда имеет ровно две таблицы. В запросе отношение представлено соединением.
Что такое Join
Объединение определяет, как объединять записи из двух или более таблиц в базе данных. Концептуально объединение очень похоже на табличное отношение. На самом деле, соединения — это запросы, которые связаны с таблицами.
Ниже приведены два основных типа соединений, которые мы будем обсуждать в этой главе.
- Внутреннее соединение
- Внешнее соединение
Оба из них могут быть легко созданы из представления дизайна запросов .
Внутреннее соединение
Позвольте нам теперь понять Внутреннее Присоединение —
- Наиболее распространенный тип объединения — это внутреннее соединение, которое также является типом соединения по умолчанию в Microsoft Access.
- Внутреннее объединение будет отображать только те строки или записи, где объединенные поля из обеих таблиц равны.
- Этот тип соединения просматривает эти общие поля и данные, содержащиеся в них. Он отображает только совпадения.
Внешнее соединение
Давайте теперь поймем, что такое Внешнее Соединение —
- Внешнее объединение отображает все строки из одной таблицы и только те строки или записи из другой таблицы, где объединенные поля равны.
- Другими словами, внешнее соединение показывает все строки из одной таблицы и только соответствующие строки из другой таблицы.
Есть и другие типы соединения —
Левое внешнее соединение и правое внешнее соединение
Давайте теперь поймем левое внешнее соединение и правое внешнее соединение —
- Вы можете выбрать таблицу, которая будет отображать все строки.
- Вы можете создать левое внешнее соединение, которое будет включать все строки из первой таблицы.
- Вы можете создать правое внешнее объединение, которое будет включать все строки из второй таблицы.
Теперь перейдем на вкладку « Создать » и создадим запрос из представления « Дизайн» . Выберите tblProjects и tblTasks и закройте диалоговое окно Show Table, как показано на следующем снимке экрана.
Добавьте поле ProjectName из tblProjects и TaskTitle, StartDate и DueDate из таблицы tblTasks .
Давайте теперь запустим запрос.
Мы показываем только записи из нескольких проектов. У нескольких из этих проектов много задач, связанных с этим проектом, и эта информация связана с полем ProjectID .
-
Когда мы создаем этот запрос в Microsoft Access, Access берет эту связь из созданных нами отношений.
-
По умолчанию он создает так называемое внутреннее соединение между этими двумя полями , между этими двумя таблицами, и именно так он связывает эту информацию вместе из этих двух таблиц.
-
Он показывает нам только совпадения, поэтому, когда мы запускаем этот запрос, в tblProjects появляется много других проектов, которые не отображаются как часть нашего набора записей в этом запросе, и это из-за того, как эти две таблицы объединены вместе, через это Внутреннее Соединение, которое снова является тем Соединением по умолчанию для любого запроса.
Когда мы создаем этот запрос в Microsoft Access, Access берет эту связь из созданных нами отношений.
По умолчанию он создает так называемое внутреннее соединение между этими двумя полями , между этими двумя таблицами, и именно так он связывает эту информацию вместе из этих двух таблиц.
Он показывает нам только совпадения, поэтому, когда мы запускаем этот запрос, в tblProjects появляется много других проектов, которые не отображаются как часть нашего набора записей в этом запросе, и это из-за того, как эти две таблицы объединены вместе, через это Внутреннее Соединение, которое снова является тем Соединением по умолчанию для любого запроса.
Однако, если вы хотите изменить отношение, допустим, вы хотите создать внешнее объединение, или, другими словами, показать все проекты из tblProjects , каждую запись в этой таблице, а также все задачи из tblTasks — Открыть свойства соединения; мы можем сделать это, просто дважды щелкнув по строке отношения.
Access отобразит имя левой таблицы и имя правой таблицы в диалоговом окне «Свойства соединения».
-
Имя левого столбца, а также имя правого столбца и первый переключатель должны включать только те строки, в которых поля объединения из обеих таблиц равны, и это внутреннее соединение, и именно это выбирается по умолчанию при создании отношений при создании соединения. в запросе, но вы можете изменить его.
-
У нас также есть два других варианта; мы можем включить все записи из tblProjects и только те записи из tblTasks, в которых объединенные поля равны, а эта — Left Outer Join.
-
У нас есть третий вариант, включающий все записи из tblTasks и только те записи из tblProjects, где объединенные поля равны, и эта является правым внешним соединением.
Имя левого столбца, а также имя правого столбца и первый переключатель должны включать только те строки, в которых поля объединения из обеих таблиц равны, и это внутреннее соединение, и именно это выбирается по умолчанию при создании отношений при создании соединения. в запросе, но вы можете изменить его.
У нас также есть два других варианта; мы можем включить все записи из tblProjects и только те записи из tblTasks, в которых объединенные поля равны, а эта — Left Outer Join.
У нас есть третий вариант, включающий все записи из tblTasks и только те записи из tblProjects, где объединенные поля равны, и эта является правым внешним соединением.
Это различные типы объединений, которые вы можете легко создавать в режиме конструктора. Давайте выберем второй вариант, который называется Left Outer Join, и нажмите Ok .
Давайте теперь посмотрим на другие шаги —
Когда вы посмотрите на линию отношений, вы увидите маленькую стрелку, указывающую на ProjectID в tblTasks . Когда вы выполните этот запрос, вы увидите следующие результаты.
Как вы можете видеть, он показывает нам каждое название проекта, независимо от того, имеет ли оно связанную задачу. Вы также увидите кучу пустых полей. Все это будет пустым, потому что в tblTasks нет связанной информации, откуда берутся эти поля. Теперь давайте снова перейдем к представлению « Дизайн» и дважды щелкните строку отношения.
В диалоговом окне «Свойства соединения» выберите третий параметр для правого внешнего соединения и нажмите « ОК» .
Теперь посмотрим на нашу линию отношений. Вы увидите, что маленькая стрелка теперь указывает на ProjectID в tblProjects . При выполнении этого запроса вы увидите следующие результаты.
Самосоединения
Самостоятельное присоединение — это еще один тип объединения. Самостоятельное соединение связывает совпадающие поля из одной и той же таблицы. Например, посмотрите на таблицу сотрудника с полем супервизора, которое ссылается на тот же тип номера, который хранится в другом поле той же таблицы — идентификатор сотрудника.
Если мы хотим узнать, кто является супервайзером Кейтлин Расмуссен, нам нужно взять число, хранящееся в этом поле супервизора, и посмотреть его в той же самой таблице в этом поле идентификатора сотрудника, чтобы узнать, что Charity Hendricks является супервизором.
Эта таблица не является идеальной структурой для реляционной базы данных, потому что она не нормализована.
Если у нас возникнет ситуация, когда мы захотим создать запрос, который будет просто перечислять имена сотрудников вместе с именами их руководителей, мы не сможем сделать простой запрос, если не создадим Self-join.
Чтобы увидеть самостоятельное соединение, создайте таблицу со следующими полями и введите некоторые данные.
Здесь мы хотим снова создать список с именем сотрудника, а затем с именем руководителя. Давайте создадим запрос из представления дизайна запроса .
Теперь добавьте таблицы tblEmployees .
Закройте это диалоговое окно.
Теперь добавьте имя и фамилию для наших сотрудников.
Теперь нам нужен способ создать связь между этой таблицей и самим собой. Для этого нам нужно открыть диалоговое окно show table и еще раз добавить tblEmployees.
Мы создали еще одну копию той же таблицы в этом представлении запроса. Теперь нам нужно создать Self-join. Для этого нажмите Supervisor в таблице tblEmployees, удерживайте кнопку мыши и перетащите ее прямо поверх EmployeeID в этой скопированной таблице — tblEmployees_1 . Затем добавьте имя и фамилию из этой скопированной таблицы.
Давайте теперь запустим ваш запрос, и вы увидите следующие результаты.
Он отображает имена сотрудников вместе с именами их руководителей. И это, как вы создаете самостоятельное соединение в Microsoft Access.