# Что вы понимаете под Self Join? Приведите примеры.

**Self Join** — это соединение таблицы с самой собой. Используется, когда нужно сравнить строки одной таблицы или найти связи внутри неё.

***

### Особенности:

* Таблица упоминается дважды с разными алиасами.
* Логически воспринимается как "две разные таблицы", хотя фактически одна.
* Применяется для иерархий, поиска связей, сравнения строк.

***

### Примеры

#### 1. Иерархия сотрудников (менеджер — подчинённый)

Есть таблица `employees`:

| id | name  | manager\_id |
| -- | ----- | ----------- |
| 1  | Иван  | NULL        |
| 2  | Анна  | 1           |
| 3  | Пётр  | 1           |
| 4  | Ольга | 2           |

Запрос, чтобы показать сотрудника и его менеджера:

```sql
SELECT e.name  AS employee,
       m.name  AS manager
FROM employees e
LEFT JOIN employees m
       ON e.manager_id = m.id;
```

**Результат:**

| employee | manager |
| -------- | ------- |
| Иван     | NULL    |
| Анна     | Иван    |
| Пётр     | Иван    |
| Ольга    | Анна    |

***

#### 2. Поиск "дубликатов" по какому-то полю

Например, хотим найти сотрудников с одинаковыми именами:

```sql
SELECT a.id, a.name, b.id, b.name
FROM employees a
JOIN employees b
  ON a.name = b.name
 AND a.id <> b.id;
```

***

#### 3. Сравнение значений в одной таблице

Например, у нас таблица `flights` с городами отправления и прибытия. Найдём "обратные рейсы":

```sql
SELECT f1.departure, f1.arrival, f2.departure, f2.arrival
FROM flights f1
JOIN flights f2
  ON f1.departure = f2.arrival
 AND f1.arrival = f2.departure;
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kaze.gitbook.io/qa-theory/bazy-dannykh/chto-vy-ponimaete-pod-self-join-privedite-primery..md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
