Россия есть игра природы, а не ума (Ф.М. Достоевский).

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

2 мин для чтения
FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
30 апреля 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.

Просмотров: 219

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

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

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

    Войти с помощью: 

    Ваш e-mail не будет опубликован. Обязательные поля помечены *

    Сообщить об опечатке

    Текст, который будет отправлен нашим редакторам:

    Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

    badge
    Обратный звонок 1
    Отправить
    galka

    Спасибо! Ваша заявка принята

    close
    galka

    Спасибо! Ваша заявка принята

    close