Внутренние соединения (связывание по равенству)
Связывание по равенству используется чаще всего и является, пожалуй, самым полезным типом связывания таблиц. Связывание по равенству называют также внутренним (INNER JOIN). При связывании по равенству таблицы связываются по общим столбцам, которые в каждой из таблиц обычно являются ключевыми. Поскольку в запросе будет присутствовать более одной таблицы, мы должны использовать для столбцов уточнения, задавая перед именем столбца имя таблицы, псевдоним или алиас — см. дальше. Имя таблицы отделятся от имени столбца точкой. В случае полного внешнего соединения выбираются все соответствующие условию в предложении WHERE строки как левой, так и правой таблиц. Затем между ними устанавливается соответствие, заданное в предложении ON. Свяжем две таблицы, покажем все аэропорты с указанием города, где аэропорт расположен:[31] SELECT * FROM AIRPORT INNER JOIN CITY ON AIRPORT. AP_CT_CODE = CITY. CT_CODE
Листинг 16. Результат внутреннего объединения таблиц AIROPORT и CITY - список аэропортов с указанием города расположения
Данные извлекаются из таблиц AIRPORT и CITY, поскольку требуемые данные размещаются частично в одной, а частично в другой таблице. Условие соединения задается после ключевого слова ON. "Главной" таблицей здесь, в левом соединении, является таблица AIRPORT. К каждой выбранной строке этой таблицы присоединяются данные из таблицы CITY, которые удовлетворяют условию в предложении ON. В нашем случае требуется равенство значения столбца AP_CT_CODE из таблицы AIRPORT, который является внешним ключом, значению столбца CT_CODE из таблицы CITY.
Перепишем запрос, для более осмысленного вывода:[32] SELECT CITY. CT_NAME AS " Город", AIRPORT. AP_NAME AS " Аэропорт" FROM AIRPORT INNER JOIN CITY ON AIRPORT. AP_CT_CODE = CITY. CT_CODE ORDER BY CITY. CT_NAME, AIRPORT. AP_NAME
При создании достаточно сложных операторов бывает утомительным набирать перед именами столбцов полные имена таблиц, особенно если эти имена достаточно длинные. По этой причине существует возможность задавать псевдонимы (или алиасы, alias) для имен таблиц. Сравните следующий оператор: [33] SELECT C. CT_NAME AS "Город", A. AP_NAME AS "Аэропорт" FROM AIRPORT A INNER JOIN CITY C ON A. AP_CT_CODE = C. CT_CODE ORDER BY C. CT_NAME, A. AP_NAME
В предложении FROM мы для таблицы AIRPORT задали псевдоним A, а для таблицы CITY — псевдоним C. Эти псевдонимы мы используем в списке выбора и в условии соединения. Можно также использовать предложение WHERE. Например, мы можем получить название всех аэропортов находящихся в городе «Москва»[34] SELECT C. CT_NAME AS "Город", A. AP_NAME AS "Аэропорт" FROM AIRPORT A INNER JOIN CITY C ON A. AP_CT_CODE = C. CT_CODE WHERE C. CT_NAME = 'Москва' ORDER BY A. AP_NAME
Внешние соединения Внешнее связывание используется, когда вывод должен содержать все записи одной таблицы, даже если некоторые из ее записей не имеют соответствующих записей в другой таблице. Пожалуй, чаще всего используются внешние соединения, которые действительно позволяют объединить разделенные в результате нормализации таблицы в единое целое. Таблицу в соединении будем называть левой, если она стоит перед ключевым словом JOIN (слева), и правой, если она стоит после от него (справа).
Читайте также: III. Внутренние вибрации. Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|