Обратите внимание на то, что в списке оператора SELECT вместе с именами каждого из столбцов указаны имена соответствующих таблиц. Это называется
Естественное связывание почти эквивалентно связыванию по равенству, но при естественном связывании таблиц повторения эквивалентных столбцов исключаются. Условие связывания оказывается таким же, но столбцы выбираются иначе.
Синтаксис соответствующего оператора следующий.
SELECT таблица1.*, таблица2.имя_столбца
[, таблицаЗ.имя_столбца ]
FROM таблица1, таблица2 [,таблицаЗ ]
WHERE таблица1.имя_столбца = таблица2.имя_столбца
[ AND таблица1.имя_столбца = таблицаЗ.имя~столбца ]
Например,
SELECT EMPLOYEEJTBL.*, EMPLOYEE_PAY_TBL.SALARY FROM EMPLOYEEJTBL,
EMPLOYEE_PAY_TBL WHERE EMPLOYEE_TBL.EMP_ID = EMPLOYEE_PAY_TBL.EMP_ID;
Этот оператор SQL возвращает данные всех столбцов из таблицы EMPLOYEE_TBL и значения SALARY из таблицы EMPLOYEE_PAY_TBL. Столбец EMP_ID имеется в обеих таблицах, но извлекается только из таблицы EMPLOYEE_TBL, поскольку во второй таблице соответствующий столбец содержит точно такую же информацию и поэтому извлекать ее нет смысла.
В следующем примере выбираются все столбцы из таблицы EMPLOYEE_TBL и один столбец из таблицы EMPLOYEE_PAY_TBL. He забывайте о том, что звездочка (*) представляет все столбцы таблицы
SELECT EMPLOYEE_TBL.*, EMPLOYEE_PAY_TBL.POSITION
FROM EMPLOYEEJTBL, EMPLOYEE_PAY_TBL
WHERE EMPLOYEE_TBL.EMP_ID = EMPLOYEE_PAY_TBL.EMP_ID;
EMP_ID LAST_NAM FIRST_NAM ADDRESS CITY ST ZIP PHONE PAGER POSITION
311549902 STEPHENS TINA D RR 3 BOX 17A GREENWOOD IN 47890
3178784465 MARKETING
442346889 PLEW LINDA С 3301 BEACON INDIANAPOLIS IN 46224
3172978990 TEAM LEADER
213764555 GLASS BRANDON S 1710 MAIN ST WHITELAND IN 47885
3178984321 3175709980 SALES MANAGER
313782439 GLASS JACOB 3789 RIVER BLVD INDIANAPOLIS IN 45734
3175457676 8887345678 SALESMAN
220984332 WALLACE MARIAH 7789 KEYSTONE INDIANAPOLIS IN 46741
3173325986 SHIPPER
443679012 SPURGEON TIFFANY 5 GEORGE COURT INDIANAPOLIS IN 46234
3175679007 SHIPPER
6 строк выбраны.
Обратите внимание на то, как здесь располагаются данные вывода Перенос строк возникает из-за того, что строки данных оказываются длиннее ширины страницы
Использование
SELECT E.EMP_ID, EP.SALARY, EP.DATE_HIRE, E.LAST_NAME
FROM EMPLOYEEJTBL E,
EMPLOYEE_PAY_TBL EP
WHERE E.EMP_ID = EP.EMP_ID
AND EP.SALARY > 20000;
В этом примере таблицам назначаются псевдонимы. Вместо имени EMPLOYEE_TBL используется Е, поскольку имя этой таблицы начинается с Е. Имя второй таблицы, EMPLOYEE_PAY_TBL, тоже начинается с Е, но для нее используется псевдоним ЕР, поскольку псевдонимы разных таблиц в одном операторе должны быть разными. Выбранные столбцы приравниваются с использованием псевдонимов таблиц. Обратите внимание на то, что для используемого в выражении ключевого слова WHERE имени столбца SALARY тоже должен использоваться псевдоним соответствующей таблицы.
При связывании по неравенству (NON-EQUIJOINS) две или несколько таблиц объединяются по условию неравенства значения столбца таблицы значению из столбца другой таблицы.
Синтаксис соответствующей части оператора следующий.
FROM таблица1, таблица2 [,таблицаЗ ]
WHERE таблица1.имя_столбца != таблица2.имя_столбца
[ AND таблица1.имя_столбца != таблицаЗ.имя_столбца ]
Например,
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 возвратит табельный номер служащего и даты поступления на работу для всех служащих с несоответствующими табельными номерами Вот пример связывания по неравенству из реальной базы данных
SELECT E.EMP_ID, E.LAST_HAME, P.POSITION
FROM EMPLOYEE_TBL E,
EMPLOYEE_PAY_TBL P