Wat is zelfjaren en wanneer zou u het gebruiken? [DUPLICEER]

Wat is zelfjaren en wanneer zou je het gebruiken? Ik begrijp geen self-joins, dus een leek uitleg met een voorbeeld zou geweldig zijn.


Antwoord 1, Autoriteit 100%

U gebruikt een zelfmelding wanneer een tabel gegevens op zichzelf verwijzen.

E.g., Een EmployeeTabel kan een SupervisorIDKolom hebben die wijst op de werknemer die de baas is van de huidige werknemer.

Om de gegevens te onderzoeken en informatie te krijgen voor zowel mensen op één rij, kunt u zich zo lid worden van dit:

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

Antwoord 2, Autoriteit 40%

Nou, een klassiek voorbeeld is waar je een lijst met werknemers en hun directe managers wilde krijgen:

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

Het is in principe gebruikt wanneer er een relatie is tussen rijen die in dezelfde tabel zijn opgeslagen.

  • werknemers.
  • Multi-level marketing.
  • machineonderdelen.

enzovoort …


Antwoord 3, Autoriteit 14%

Een self-join is gewoon wanneer u zich bij een tafel met zich aansluit. Er is geen SELF JOINTrefwoord, u schrijft gewoon een gewone join waarbij beide tabellen bij de join dezelfde tabel zijn. Eén ding om op te merken is dat wanneer u zichzelf aansluit bij het noodzakelijk is om een ​​alias voor de tafel te gebruiken, anders zou de tafelnaam dubbelzinnig zijn.

Het is handig als u paren rijen uit dezelfde tabel wilt correleren, bijvoorbeeld een ouder-kindrelatie. De volgende zoekopdracht levert de namen op van alle directe subcategorieën van de categorie ‘Keuken’.

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

Antwoord 4, autoriteit 6%

SQL self-join is gewoon een normale join die wordt gebruikt om een tafel aan zichzelf toe te voegen.

Voorbeeld:

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

Antwoord 5, autoriteit 3%

Je zou een self-join gebruiken op een tafel die naar zichzelf ‘verwijst’, bijv. een tabel met werknemers waarbij managerid een refererende sleutel is naar werknemer-id op diezelfde tafel.

Voorbeeld:

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

Other episodes