Объединение связанных таблиц в запросе

We use cookies. Read the Privacy and Cookie Policy

Объединение связанных таблиц в запросе

Для выборки связанной информации из нескольких таблиц используется объединение (join). Чтобы создать объединение в запросе, необходимо определить первичные (primary) и внешние (foreign) ключи в таблицах, участвующих в объединении (эти понятия обсуждаются в главе 1, "Основы построения баз данных"). Например, рассмотрим две связанные таблицы с показанными ниже структурами.

tblCustomer ID FirstName LastName Address City State PostalCode Phone Fax Email tblOrder ID CustomerID OrderDate OrderAmount

Хотя в таблице tblOrder хранится информация о заказах, а в таблице tblCustomer — информация о клиентах, вполне вероятно, что вам потребуется, например, отобрать такую информацию о заказах клиентов, как показано ниже.

FirstName LastName OrderDate Jane Winters 9/10/2001 Jane Winters 8/16/2001 Thurston Ryan 7/2/2001 Dave Martin 6/5/2001 Daisy Klein 4/4/2001 ...

Такой результирующий набор нетрудно получить, используя объединение, несмотря на то что необходимые данные хранятся в разных таблицах. Можно надеяться на получение нужных данных, если сообщить процессору баз данных о том, что первичный ключ таблицы tblCustomer(ID) связан с внешним ключом ((CustomerID)) таблицы tblOrder.

НА ЗАМЕТКУ

Обратите внимание, что в этом результате объединения один и тот же клиент отображен дважды, хотя его имя было введено в базу данных один раз. Это значит, что клиент имеет несколько заказов. Иными словами, при нескольких заказах одного и того же клиента вам не пришлось вводить в базу данных информацию об этом клиенте несколько раз. Вместе с тем в результате выполнения запроса иногда можно получить избыточную информацию. Для исправления такой ситуации можно применять несколько разных методов.