Иллюстрированный самоучитель по SQL для начинающих

Реляционные операторы

Объединение, основанное на равенстве

Объединение, основанное на равенстве, – это простое объединение с предложением WHERE, в котором находится условие, определяющее, что значение из одного столбца первой таблицы должно быть равно значению из соответствующего столбца второй таблицы. Если применить такое объединение к таблицам, имеющимся в примере из предыдущего раздела, то можно получить намного более содержательный результат:

SELECT *
FROM EMPLOYEE, COMPENSATION
WHERE EMPLOYEE.EmpID = COMPENSATION.Employ;

И вот что вышло:

EmpID FName LName City Phone Employ Salary Bonus
1 Whitey Ford Orange 555-1001 1 33000 10000
2 Don Larson Newark 555-3221 2 18000 2000
3 Sal Maglie Nutley 555-6905 3 24000 5000
4 Bob Turley Passaic 555-8908 4 22000 7000

В этой таблице зарплаты и премии, расположенные справа, прилагаются к данным о сотрудниках, находящимся слева. Впрочем, лишние данные есть и в этой таблице, так как столбец EmpID повторяет столбец Employ. Исправить этот недостаток можно, сформулировав запрос немного по-другому:

SELECT EMPLOYEE.*, COMPENSATION.SALARY, COMPENSATION.Bonus
FROM EMPLOYEE, COMPENSATION
WHERE EMPLOYEE.EmpID = COMPENSATION.Employ;

В результате получилось следующее:

EmpID FName LName City Phone Salary Bonus
1 Whitey Ford Orange 555-1001 33000 10000
2 Don Larson Newark 555-3221 18000 2000
3 Sal Maglie Nutley 555-6905 24000 5000
4 Bob Turley Passaic 555-8908 22000 7000

Эта таблица сообщает вам то, что вы хотите знать, при этом не "нагружая" вас никакими лишними данными. Впрочем, писать сам запрос было несколько утомительно. Чтобы избежать двусмысленности, в именах столбцов приходилось явно указывать имена таблиц. Единственная выгода от этого – тренировка пальцев.

Можно облегчить труд по вводу кода SQL, если использовать псевдонимы (или имена корреляции). Псевдоним – это другое, более короткое имя таблицы. Если переделать предыдущий запрос с помощью псевдонимов, то получится примерно следующее:

SELECT Е.*, С.Salary, С.Bonus
FROM EMPLOYEE E, COMPENSATION С
WHERE E.EmpID = С.Employ;

В этом примере Е – это псевдоним для EMPLOYEE, а С – для COMPENSATION. Действие псевдонима ограничено только тем оператором, в котором он определен. После объявления псевдонима в предложении FROM его необходимо использовать в пределах оператора. При этом нельзя одновременно использовать и длинную форму имени таблицы, и псевдоним.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.