Псевдонимы

Синтаксис команды для объединения таблицы с собой, тот же что и для объединения многочисленных таблиц, в одном экземпляре. Когда вы объединяете таблицу с собой, все повторяемые имена столбца, заполяняются префиксами имени таблицы. Чтобы ссылаться к этим столбцам внутри запроса, вы должны иметь два различных имени для этой таблицы. Вы можете сделать это с помощью определения временных имен называемых — переменными диапазона, переменными корреляции или просто — псевдонимами Вы определяете их в предложении FROM запроса. Это очень просто: вы набираете им таблицы, оставляете пробел, и затем набираете псевдоним для нее.
Имеется пример который находит все пары заказчиков имеющих один и тот же самый рейтинг ( вывод показывается в Рисунке 9.1):
SELECT first.cname, second.cname, first.rating FROM Customers first, Customers second WHERE first.rating = second.rating;

SQL Execution Log

Giovanni
Giovanni

Giovanni
Liu

Liu
Giovanni

Liu
Liu

Grass
Grass

Grass
Cisneros

Clemens
Hoffman

Clemens
Clemens

Clemens
Pereira

Cisneros
Grass

Cisneros
Cisneros

Pereira
Hoffman

Pereira
Clemens

Pereira
Pereira

Рисунок 9.1: Объединение таблицы с собой
( обратите внимание что на Рисунке 9.1, как и в некоторых дальнейших примерах, полный запрос не может уместиться в окне вывода, и следовательно будет усекаться. )
В вышеупомянутой команде, SQL ведет себя так, как если бы он соединял две таблицы называемые ‘первая и ‘вторая’. Обе они — фактически, таблицы Заказчика, но псевдонимы разрешают им быть обработанными независимо. Псевдонимы первый и второй были установлены в предложении FROM запроса, сразу после имени копии таблицы. Обратите внимание что псевдонимы могут использоваться в предложении SELECT, даже если они не определены в предложении FROM. Это — очень хорошо. SQL будет сначала допускать любые такие псевдонимы на веру, но будет отклонять команду если они не определены далее в предложении FROM запроса. Псевдоним существует — только пока команда выполяняется !
Когда запрос заканчивается, псевдонимы исполяьзуемые в нем больше не имеют никакого значения.
Теперь, когда имеются две копии таблицы Заказчиков, чтобы работать с ними, SQL может обрабатывать эту операцию точно также как и любое другое объединение — берет каждую строку из одного псевдонима и сравнивает ее с каждой строкой из другого псевдонима.

‹ Как делать объединение таблицы с собой ?
Вверх
Устранение избыточности ›

Добавить комментарий

Adblock
detector