Связывание по равенству

Компоненты условия связывания

Как вы уже знаете из предыдущих уроков, ключевые слова SELECT и FROM являются необходимыми элементами оператора SQL, определяющего запрос. При связывании таблиц необходимым элементом оператора SQL является ключевое слово WHERE. Имена таблиц для связывания указываются в списке ключевого слова FROM. Связь определяется в выражении ключевого слова WHERE. В выражении для связывания таблиц можно использовать операции =, <, >, <>, -.-, >-, '=, BETWEEN, LIKE и NOT. Но наиболее часто для связывания используется знак равенства.

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

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

SELECT таблица1.столбец1, таблица2.столбец2...

FROM таблица1, таблица2 [, таблицаЗ ]

WHERE таблица1.имя_столбца = таблица2.имя_столбца

[ AND таблица1.имя_столбца = таблицаЗ.имя столбца ]

Обратите внимание на отступы в приводимых ниже примерах операторов SQL. При правильном использовании отступов оператор понять легче. Использовать отступы не обязательно, но крайне желательно

Рассмотрим пример.

SELECT EMPLOYEE_TBL.EMP_ID, EMPLOYEE_PAY_TBL.DATE_HIRE

FROM EMPLOYEE_TBL, EMPLOYEE_PAY_TBL

WHERE EMPLOYEE_TBL.EMP_ID = EMPLOYEE_PAY_TBL .EMP_ID;

Этот оператор SQL возвращает табельный номер служащего и дату зачисления служащего в штат. Табельный номер извлекается из таблицы EMPLOYEE_TBL (хотя это поле имеется в обеих таблицах, все равно имя одной из таблиц необходимо указать), а дата зачисления в штат берется из таблицы EMPLOYEE_PAY_TBL. Ввиду того, что табельный номер служащего присутствует в обеих таблицах, имена соответствующих двух столбцов таблиц рассматриваются как эквивалентные (что задается используемым в операторе равенством). Тем самым вы говорите серверу базы данных, откуда следует извлекать данные.

В следующем примере данные извлекаются из таблиц EMPLOYEE_TBL и EMPLOYEE_PAY_TBL, поскольку требуемые данные размещаются частично в одной, а частично в другой таблице. Здесь используется связывание по равенству.

SELECT EMPLOYEE_TBL.EMP_ID, EMPLOYEE_TBL.LAST_NAME, EMPLOYEE_PAY_TBL.POSITION

FROM EMPLOYEEJTBL, EMPLOYEE_PAY_TBL

WHERE EMPLOYEE_TBL.EMP_ID = EMPLOYEE_PAY_TBL.EMP_ID;

 

EMP_ID LAST_NAM POSITION

311549902 STEPHENS MARKETING

442346889 PLEW TEAM LEADER

213764555 GLASS SALES MANAGER

313782439 GLASS SALESMAN

220984332 WALLACE SHIPPER

443679012 SPURGEON SHIPPER

 

Обратите внимание на то, что в списке оператора SELECT вместе с именами каждого из столбцов указаны имена соответствующих таблиц. Это называется подробным определением столбцов в запросе. Подробные определения требуются только для тех столбцов, которые присутствуют в нескольких из указанных в запросе таблиц. Но в операторе обычно указываются подробные определения для всех столбцов, чтобы не возникало лишних вопросов при отладке или модификации программного кода SQL.