2.19.3. Использование псевдонимов при соединении таблиц

Часто при запросе информации необходимо осуществлять соединение таблицы с ее же копией. Например, это требуется в случае, когда нужно найти фамилии студентов, имеющих оди­наковые имена. При соединении таблицы с ее же копией вводят псевдонимы (апиасы) таблицы. Запрос для поиска фамилий студентов, имеющих одинаковые имена, выглядит следующим образом:

SELECT FIRST.SURNAME, SECOND.SURNAME FROM STUDENT FIRST, STUDENT SECOND WHERE FIRST.NAME = SECOND.NAME

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

{,,    SELECT FIRST. SURNAME, SECOND. SURNAME

ft FROM STUDENT  PIR3T,   STUDENT SECOND

4

; ! WHERE FIRST.NAME = SECOND.NAME

AND   FIRST.SURNAME   <    SECOND.SURNAME

Упражнения

1. Написать запрос, выполняющий вывод списка всех пар фамилий студентов, проживающих в одном городе. При этом не включать в список комбинации фамилий студентов самих с собой (то есть комбинацию типа «Иванов-Иванов») и комбинации фамилий студентов, отличающиеся порядком следования (то есть включать одну из двух комбинаций типа «Иванов-Петров» и «Петров-Ива­нов»).

2. Написать запрос, выполняющий вывод списка всех пар названий университетов, расположенных в одном городе, не включая в спи­сок комбинации названий университетов самих с собой и пары на­званий университетов, отличающиеся порядком следования.

3. Написать запрос, который позволяет получить данные о названиях университетов и городов, в которых они расположены, с рейтин­гом, равным или превышающим рейтинг В ГУ.