Інколи необхідно з'єднати таблицю із самою собою. Для цього у фразі FROM потрібно двічі зазначити назву таблиці з різними псевдонімами, щоб можна було
на кожен її екземпляр посилатися окремо. Розглянемо такий приклад. Необхідно перевірити, чи є в таблиці ФАКУЛЬТЕТ пари рядків, де назви факультетів збігаються, а ключі #F різні.
SELECT fl.Назва. fl.#F. f2.#F
FROM ФАКУЛЬТЕТ fl. ФАКУЛЬТЕТ f2
WHERE fl.Назва = f2.Назва AND fl.#F != f2.#F
З'єднання можна виконувати безпосередньо у фразі FROM, скориставшись одним із різновидів оператора JOIN (наприклад, Fl INNER JOIN F2 ON F1.F# = F2.F#). Слід пам'ятати, що за певних обставин потрібно саме виконувати JOIN-з'єднання, а не обчислювати декартів добуток таблиць. Наприклад, декартів добуток двох таблиць з десятками тисяч рядків у кожній обчислюватиметься протягом кількох годин, а обсяг кінцевої таблиці буде вимірюватися сотнями гігабайтів!
Розглянемо кілька запитів, що вже використовувались як приклади у розділі 3. Запити будемо записувати як мовою SQL, так і за допомогою реляційної алгебри.
Запит 4.3______________________________________________________________
Визначити всі кафедри факультету інформатики. Мова SQL:
SELECT КАФЕДРА.Назва
FROM ФАКУЛЬТЕТ. КАФЕДРА
WHERE ФАКУЛЬТЕТ.#F = КАФЕДРА.#F AND ФАКУЛЬТЕТ.Назва = "інформатики"
Реляційна алгебра:
((ФАКУЛЬТЕТ^ = #F]KAOEflPA) [ФАКУЛЬТЕТ. Назва = "інформатики"]) [КАФЕДРА. Назва]
Запит 4.4______________________________________________________________
Визначити всіх викладачів кафедри АСУ та їхні телефонні номери. Мова SQL:
SELECT Прізвище. Тел
FROM КАФЕДРА. ВИКЛАДАЧ
WHERE КАФЕДРА.#D = ВИКЛАДАЧКО AND КАФЕДРА.Назва - "АСУ"
Реляційна алгебра: ((КАФЕДРАМ = #0]ВИКЛАДАЧ)[КАФЕДРА.Назва = "АСУ"])[ВИКЛАДАЧ.Прізвище. Тел]