Что такое самосоединение и когда вы его используете? Я не понимаю самосоединений, поэтому объяснение непрофессионала с примером было бы отличным.
Что такое SELF JOIN и когда бы вы его использовали?
Ответы (5)
Вы используете самосоединение, когда таблица ссылается на данные сама по себе.
Например, таблица Employee
может иметь столбец 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
AS
при создании псевдонимов для таблиц?
- person Manu Chadha; 08.01.2019
AS
не является обязательным - я приму решение на основе удобочитаемости запроса.
- person D'Arcy Rittich; 08.01.2019
Ну, один классический пример, когда вы хотели получить список сотрудников и их непосредственных руководителей:
select e.employee as employee, b.employee as boss
from emptable e, emptable b
where e.manager_id = b.empolyee_id
order by 1
В основном он используется там, где есть какая-либо связь между строками, хранящимися в одной таблице.
- сотрудники.
- многоуровневый маркетинг.
- части машины.
И так далее...
ORDER BY
вместо имени столбца.
- person D'Arcy Rittich; 29.07.2010
Самосоединение — это просто соединение таблицы с самим собой. Ключевого слова SELF JOIN
нет, вы просто пишете обычное соединение, в котором обе таблицы, участвующие в объединении, являются одной и той же таблицей. Следует отметить, что при самостоятельном присоединении необходимо использовать псевдоним для таблицы, иначе имя таблицы будет неоднозначным.
Это полезно, когда вы хотите сопоставить пары строк из одной и той же таблицы, например отношения родитель-потомок. Следующий запрос возвращает имена всех непосредственных подкатегорий категории «Кухня».
SELECT T2.name
FROM category T1
JOIN category T2
ON T2.parent = T1.id
WHERE T1.name = 'Kitchen'
SELF JOIN
. Я был смущен этой частью!
- person nclsvh; 12.02.2018
Самосоединение SQL — это просто обычное соединение, которое используется для соединения таблицы с самой собой.
Пример:
Select *
FROM Table t1, Table t2
WHERE t1.Id = t2.ID
SELECT t1.*
, чтобы избежать дублирования имен столбцов в результате?
- person Matthieu; 28.09.2013
Вы бы использовали самосоединение для таблицы, которая "ссылается" на себя - например. таблица сотрудников, где managerid является внешним ключом для employeeid в той же таблице.
Пример:
SELECT E.name, ME.name AS manager
FROM dbo.Employees E
LEFT JOIN dbo.Employees ME
ON ME.employeeid = E.managerid