Подтвердить что ты не робот

Что такое SELF JOIN и когда вы его используете?

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

Что такое самостоятельное присоединение, и когда вы его используете? Я не понимаю, что я присоединяюсь, поэтому объяснение непрофессионала с примером будет замечательным.

4b9b3361

Ответ 1

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

Например, таблица 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

Ответ 2

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

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

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

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

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

Ответ 3

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

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

SELECT T2.name
FROM category T1
JOIN category T2
ON T2.parent = T1.id
WHERE T1.name = 'Kitchen'

Ответ 4

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

Пример:

Select *
FROM Table t1, Table t2
WHERE t1.Id = t2.ID

Ответ 5

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

Пример:

SELECT E.name, ME.name AS manager
FROM dbo.Employees E
LEFT JOIN dbo.Employees ME
ON ME.employeeid = E.managerid