Что такое SELF JOIN и когда бы вы его использовали? [дубликат]
Возможные Дубликаты:
sql: self-joins explained
что такое self join и когда бы вы его использовали? Я не понимаю, как я присоединяюсь, поэтому объяснение непрофессионала с примером было бы здорово.
5 ответов:
вы используете самосоединение, когда таблица ссылается на данные сама по себе.
например, an
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
ну, один классический пример, где вы хотели получить список сотрудников и их непосредственных руководителей:
select e.employee as employee, b.employee as boss from emptable e, emptable b where e.manager_id = b.empolyee_id order by 1
он в основном используется там, где есть какая-либо связь между строками, хранящимися в одной таблице.
- человек.
- многоуровневый маркетинг.
- детали машин.
и так далее...
самосоединение-это просто когда вы соединяете таблицу с собой. Нет никакого
SELF JOIN
ключевое слово, вы просто пишете обычное соединение, где обе таблицы, участвующие в соединении, являются одной и той же таблицей. Следует отметить, что при самостоятельном присоединении необходимо использовать псевдоним для таблицы, иначе имя таблицы будет неоднозначным.это полезно, когда вы хотите соотнести пары строк из одной таблицы, например, отношения родитель - ребенок. Следующий запрос возвращает названия всех непосредственных подкатегорий категории "кухня".
SELECT T2.name FROM category T1 JOIN category T2 ON T2.parent = T1.id WHERE T1.name = 'Kitchen'