O que é auto-adesão e quando você usá-lo? [duplicado]
O que é auto-adesão e quando o usarias? Eu não entendo self junta-se então uma explicação leiga com um exemplo seria ótimo.possÃvel duplicado:
SQL: auto-junção explicada
5 answers
Você usa uma auto-junção quando uma tabela referencia os dados em si.
Por exemplo, uma tabela Employee
pode ter uma coluna SupervisorID
que aponta para o empregado que é o chefe do empregado actual.
Para consultar os dados e obter informações para ambas as pessoas em uma linha, você poderia se juntar assim:
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
É basicamente usado onde existe qualquer relação entre linhas armazenadas na mesma tabela.
- Empregados.
- comercialização a vários nÃveis.
- peças para máquinas.
Uma auto-adesão é simplesmente quando você se junta a uma mesa consigo mesma. Não existe nenhuma palavra-chave SELF JOIN
, você apenas escreve uma junção normal onde ambas as tabelas envolvidas na junção são a mesma tabela. Uma coisa a notar é que quando você está se juntando a si mesmo é necessário usar um alias para a tabela, caso contrário o nome da tabela seria AmbÃguo.
É útil quando se quer correlacionar pares de linhas da mesma tabela, por exemplo, uma relação pai - filho. A seguinte consulta devolve o nomes de todas as subcategorias imediatas da categoria "Cozinha".
SELECT T2.name
FROM category T1
JOIN category T2
ON T2.parent = T1.id
WHERE T1.name = 'Kitchen'
A auto-junção SQL é simplesmente uma junção normal que é usada para juntar uma tabela para si mesma.
Exemplo:
Select *
FROM Table t1, Table t2
WHERE t1.Id = t2.ID
Exemplo:
SELECT E.name, ME.name AS manager
FROM dbo.Employees E
LEFT JOIN dbo.Employees ME
ON ME.employeeid = E.managerid