Реляционные операторы
Примеры данных, хранящихся в трех указанных таблицах, приведены в табл. 10.4-10.6.
Таблица 10.4. Таблица EMPLOYEE.
| EmpID | Name (фамилия) |
|---|---|
| 1 | Ferguson |
| 2 | Frost |
| 3 | Toyon |
Таблица 10.5. Таблица PROJECTS.
| ProjectName (название проекта) | EmpID |
|---|---|
| X-63 Structure (устройство ракеты Х-63) | 1 |
| X-64 Structure (устройство ракеты Х-64) | 1 |
| X-63 Guidance (система управления Х-63) | 2 |
| X-64 Guidance (система управления Х-64) | 2 |
| X-63 Telemetry (телеметрия Х-63) | 3 |
| X-64 Telemetry (телеметрия X-64) | 3 |
Как видно в этих таблицах, Фергюсон работал над проектами устройства ракет Х-63 и Х-64, а также является специалистом по механическому проектированию и расчетам аэродинамической нагрузки.
Теперь предположим, что вы как менеджер хотите увидеть всю информацию обо всех своих сотрудниках. Для этого вы решили применить к таблицам EMPLOYEE, PROJECTS и SKILLS объединение, основанное на равенстве:
SELECT * FROM EMPLOYEE E, PROJECTS P, SKILLS S WHERE E.EmpID = P.EmpID AND E.EmpID = S.EmpID;
Таблица 10.6. Таблица SKILLS.
| Skill (квалификация) | EmpID |
|---|---|
| Mechanical Design (механическое проектирование) | 1 |
| Aerodynamic Loading (расчеты аэродинамической нагрузки) | 1 |
| Analog Design (проектирование аналоговых устройств) | 2 |
| Gyroscope Design (проектирование гироскопов) | 2 |
| Digital Design (проектирование цифровых устройств) | 3 |
| R/F Design (проектирование РЛС) | 3 |
Эту же операцию можно представить в виде внутреннего объединения, используя для этого следующий синтаксис:
SELECT * FROM EMPLOYEE E INNER JOIN PROJECTS P ON (E.EmpID = P.EmpID) INNER JOIN SKILLS S ON (E.EmpID = S.EmpID);
