Поиск по сайту:
Одной иллюзией меньше — одной морщиной больше (К. Форнере).

SQL — Оператор SELF JOINS

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (6 оценок, среднее: 2,17 из 5)
Загрузка...
30.04.2017
Помощь и синтаксис sql joins

SELF JOINS в SQL используется для соединения таблицы на себя, как если бы в таблице было две таблицы; временно переименовать хотя бы одну таблицу в операторе SQL.

Синтаксис

Базовый синтаксис SELF JOIN выглядит следующим образом:

SELECT a.column_name, b.column_name...
FROM table1 a, table1 b
WHERE a.common_field = b.common_field;

 

Здесь, предложение WHERE может быть любое данное выражение основанное на вашем требовании.

Пример

Рассмотрим следующую таблицу.

Таблица CUSTOMERS состоит из следующих записей:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Maxim    |  35 | Moscow    | 20000.00 |
|  2 | Roma     |  34 | Krasnodar | 15000.00 |
|  3 | Oleg     |  33 | Rostov    | 20000.00 |
|  4 | Masha    |  35 | Moscow    | 65000.00 |
|  5 | Ruslan   |  34 | Omsk      | 85000.00 |
|  6 | Dima     |  32 | SP        | 45000.00 |
|  7 | AndreyEx |  38 | SP        | 100000.00|
+----+----------+-----+-----------+----------+

 

Теперь, давайте объединим эту таблицу, используя SELF JOIN следующим образом:

SQL> SELECT  a.ID, b.NAME, a.SALARY
   FROM CUSTOMERS a, CUSTOMERS b
   WHERE a.SALARY < b.SALARY;

 

Это произведет следующий результат:

+----+----------+-----+--------+
| ID | NAME     | AGE | AMOUNT |
+----+----------+-----+--------+
|  1 | Maxim    |  35 |  15000 |
|  3 | Oleg     |  33 |  15000 |
|  4 | Masha    |  35 |  20000 |
|  4 | Masha    |  35 |  15000 |
|  4 | Masha    |  35 |  20000 |
|  4 | Masha    |  35 |  45000 |
|  5 | Ruslan   |  34 |  20000 |
|  5 | Ruslan   |  34 |  15000 |
|  5 | Ruslan   |  34 |  20000 |
|  5 | Ruslan   |  34 |  65000 |
|  5 | Ruslan   |  34 |  45000 |
|  6 | Dima     |  32 |  20000 |
|  6 | Dima     |  32 |  15000 |
|  6 | Dima     |  32 |  20000 |
|  7 | AndreyEx |  38 |  20000 |
|  7 | AndreyEx |  38 |  15000 |
|  7 | AndreyEx |  38 |  20000 |
|  7 | AndreyEx |  38 |  65000 |
|  7 | AndreyEx |  38 |  85000 |
|  7 | AndreyEx |  38 |  45000 |
+----+----------+-----+--------+

 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Если статья понравилась, то поделитесь ей в социальных сетях:

Читайте также

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Спасибо!

Теперь редакторы в курсе.