Hva er SELF JOIN, og når vil du bruke det?

Mulig duplikat: **. sql: self-joins explained

Hva er self join og når vil du bruke det? Jeg forstår ikke self joins, så en lekmannsforklaring med et eksempel ville være flott.

Løsning

Du bruker en self join når en tabell refererer til data i seg selv.

F.eks. kan en Employee-tabell ha en SupervisorID-kolonne som peker til den ansatte som er sjefen til den aktuelle ansatte.

For å forespørre dataene og få informasjon for begge personene i én rad, kan du bruke self join på denne måten:

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
Kommentarer (5)

En self join er ganske enkelt når du kobler en tabell med seg selv. Det er ikke noe SELF JOIN nøkkelord, du skriver bare en vanlig sammenføyning der begge tabellene som er involvert i sammenføyningen er den samme tabellen. En ting å legge merke til er at når du selv blir med, er det nødvendig å bruke et alias for tabellen, ellers vil tabellnavnet være tvetydig.

Det er nyttig når du vil korrelere par av rader fra samme tabell, for eksempel et overordnet - underordnet forhold. Følgende spørring returnerer navnene på alle umiddelbare underkategorier av kategorien 'Kjøkken'.

SELECT T2.name
FROM category T1
JOIN category T2
ON T2.parent = T1.id
WHERE T1.name = 'Kitchen'
Kommentarer (2)

Du vil bruke en selfjoin på en tabell som "refererer" til seg selv - f.eks. en tabell med ansatte der managerid er en fremmednøkkel til employeeid på den samme tabellen.

Eksempel:

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