Что САМ СОЕДИНЕНИЕ и когда Вы использовали бы его? [дубликат]

Возможный дубликат:
sql: самосоединения объяснены

Что сам соединение и когда Вы использовали бы его? Я не понимаю сам соединения, таким образом, объяснение неспециалиста с примером было бы большим.

98
задан DaveInCaz 21 September 2018 в 19:35
поделиться

5 ответов

Вы используете самосоединение, когда таблица ссылается на данные сама по себе.

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

Чтобы запросить данные и получить информацию для обоих людей в одной строке, вы можете самостоятельно объединиться следующим образом:

select e1.EmployeeID, 
    e1.FirstName, 
    e1.LastName,
    e1.SupervisorID, 
    e2.FirstName as SupervisorFirstName, 
    e2.LastName as SupervisorLastName
from Employee e1
left outer join Employee e2 on e1.SupervisorID = e2.EmployeeID
154
ответ дан 24 November 2019 в 05:10
поделиться

SQL self-join - это обычное соединение, которое используется для соединения таблицы с самой собой.

Example:

Select *
FROM Table t1, Table t2
WHERE t1.Id = t2.ID
11
ответ дан 24 November 2019 в 05:10
поделиться

Ну, один классический пример - это когда вы хотели получить список сотрудников и их непосредственных руководителей:

select e.employee as employee, b.employee as boss
from emptable e, emptable b
where e.manager_id = b.empolyee_id
order by 1

Он в основном используется там, где есть какие-либо отношения между строками, хранящимися в одной таблице.

  • сотрудников.
  • многоуровневый маркетинг.
  • детали машин.

И так далее ...

54
ответ дан 24 November 2019 в 05:10
поделиться

Вы используете самосвязывание в таблице, которая "ссылается" на саму себя - например, таблица сотрудников, где managerid является внешним ключом к employeeid в той же таблице.

Пример:

SELECT E.name, ME.name AS manager
FROM dbo.Employees E
LEFT JOIN dbo.Employees ME
ON ME.employeeid = E.managerid
6
ответ дан 24 November 2019 в 05:10
поделиться

Самостоятельное объединение - это просто объединение таблицы с самим собой. Не существует ключевого слова SELF JOIN , вы просто пишете обычное соединение, в котором обе таблицы, участвующие в объединении, являются одной и той же таблицей. Следует отметить, что при самостоятельном присоединении необходимо использовать псевдоним для таблицы, иначе имя таблицы будет неоднозначным.

Это полезно, когда вы хотите сопоставить пары строк из одной и той же таблицы, например отношения родитель-потомок. Следующий запрос возвращает имена всех непосредственных подкатегорий категории «Кухня».

SELECT T2.name
FROM category T1
JOIN category T2
ON T2.parent = T1.id
WHERE T1.name = 'Kitchen'
21
ответ дан 24 November 2019 в 05:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: